Web 项目 JFinal 开发框架

Web项目JFinal开发框架

  • l  JFinal创建项目整体的开发框架
  • 创建 Dynamic Web Project,根据JFinal手册和项目AssignSyn

      

  • 修改web.xml
  • 创建如上图所示的项目结构
  • 其中源代码包src下有config、controller、model以及other包。
  1. l  Config包主要用于项目的配置(包括数据库的连接、如有配置等)
  2. l  Controller主要用于后台的数据判断与处理,基本上一个基础页面需要一个controller,例如;登录页面需要一个controller,普通员工、部门经理和总经理的基本页面不同,相应的功能也有些不同,所以这三类人的通道都用一个controller来进行后台的控制
  3. l  Model用来存放Generator模板自动生成的model类,用于实现对数据库的数据进行处理(增、删、改、查)。对BaseModel自动生成处理函数,而Model集成BaseModel的进行数据处理方法。一般有数据库中表的个数乘以2的.java文件。
  4. 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();
    }
}
View Code

    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"));
    }
}
  1. l  WebRoot下主要是是页面的实现,将自己的页面和资源分好类,放在不同的文件夹下,来方便代码的实现和管理。一般主要的界面(默认的界面)放在index下,其他由主界面衍生下来的界面放在每个主界面对应的界面文件下
  2. l  将有关项目的例如数据库和一些文档、ReadMe放在项目下,以便对项目的管理和修改。
  3. l  如果项目有几个人完成,最好用Githup来管理项目以及进行小组成员内的分工。
原文地址:https://www.cnblogs.com/superjn/p/6133891.html