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來管理項目以及進行小組成員內的分工。