Web项目JFinal开发框架
- l JFinal创建项目整体的开发框架
- 创建 Dynamic Web Project,根据JFinal手册和项目AssignSyn
- 修改web.xml
- 创建如上图所示的项目结构
- 其中源代码包src下有config、controller、model以及other包。
- l Config包主要用于项目的配置(包括数据库的连接、如有配置等)
- l Controller主要用于后台的数据判断与处理,基本上一个基础页面需要一个controller,例如;登录页面需要一个controller,普通员工、部门经理和总经理的基本页面不同,相应的功能也有些不同,所以这三类人的通道都用一个controller来进行后台的控制
- l Model用来存放Generator模板自动生成的model类,用于实现对数据库的数据进行处理(增、删、改、查)。对BaseModel自动生成处理函数,而Model集成BaseModel的进行数据处理方法。一般有数据库中表的个数乘以2的.java文件。
- l Other中有GeneratorDemo.java和MD5.java。其中Generator文件是用来自动生成数据库数据的处理方法。而MD5重要是用来进行数据库密码的加密。
Generator中的代码如下:
package other; import javax.sql.DataSource; import com.jfinal.kit.PathKit; import com.jfinal.kit.Prop; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.generator.Generator; import com.jfinal.plugin.c3p0.C3p0Plugin; /** * GeneratorDemo */ public class GeneratorDemo { public static DataSource getDataSource() { C3p0Plugin c3p0Plugin = new C3p0Plugin("jdbc:mysql://127.0.0.1/assignsys?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull" ,"root","950308"); c3p0Plugin.start(); return c3p0Plugin.getDataSource(); } public static void main(String[] args) { // base model 所使用的包名 String baseModelPackageName = "model"; // base model 文件保存路径 String baseModelOutputDir = PathKit.getWebRootPath() + "/../src/model"; // model 所使用的包名 (MappingKit 默认使用的包名) String modelPackageName = "model"; // model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径) String modelOutputDir = baseModelOutputDir; // 创建生成器 Generator gernerator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir); // 设置是否在 Model 中生成 dao 对象 gernerator.setGenerateDaoInModel(true); // 设置是否生成字典文件 gernerator.setGenerateDataDictionary(false); // 生成 gernerator.generate(); } }
MD5的代码如下:
package other; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* * MD5 算法 */ public class MD5 { // 全局数组 private final static String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; public MD5() { } // 返回形式为数字跟字符�? private static String byteToArrayString(byte bByte) { int iRet = bByte; // System.out.println("iRet="+iRet); if (iRet < 0) { iRet += 256; } int iD1 = iRet / 16; int iD2 = iRet % 16; return strDigits[iD1] + strDigits[iD2]; } // 返回形式只为数字 private static String byteToNum(byte bByte) { int iRet = bByte; System.out.println("iRet1=" + iRet); if (iRet < 0) { iRet += 256; } return String.valueOf(iRet); } // 转换字节数组�?16进制字串 private static String byteToString(byte[] bByte) { StringBuffer sBuffer = new StringBuffer(); for (int i = 0; i < bByte.length; i++) { sBuffer.append(byteToArrayString(bByte[i])); } return sBuffer.toString(); } public static String GetMD5Code(String strObj) { String resultString = null; try { resultString = new String(strObj); MessageDigest md = MessageDigest.getInstance("MD5"); // md.digest() 该函数返回�?�为存放哈希值结果的byte数组 resultString = byteToString(md.digest(strObj.getBytes())); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } return resultString; } public static void main(String[] args) { MD5 getMD5 = new MD5(); System.out.println(getMD5.GetMD5Code("000000")); } }
- l WebRoot下主要是是页面的实现,将自己的页面和资源分好类,放在不同的文件夹下,来方便代码的实现和管理。一般主要的界面(默认的界面)放在index下,其他由主界面衍生下来的界面放在每个主界面对应的界面文件下
- l 将有关项目的例如数据库和一些文档、ReadMe放在项目下,以便对项目的管理和修改。
- l 如果项目有几个人完成,最好用Githup来管理项目以及进行小组成员内的分工。