JFinal开发平台搭建(1)

为什么使用JFinal

前段时间听说了JFinal框架,据说适合快速开发,恰好接到了外包项目,决定用JFinal试一下怎么样,于是就有了这篇。。。

官方网站

http://www.jfinal.com/

看一下官网上的宣传

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)

JFinal有如下主要特点:

  • MVC架构,设计精巧,使用简单
  • 遵循COC原则,零配置,无xml
  • 独创Db + Record模式,灵活便利
  • ActiveRecord支持,使数据库开发极致快速
  • 自动加载修改后的java文件,开发过程中无需重启web server
  • AOP支持,拦截器配置灵活,功能强大
  • Plugin体系结构,扩展性强
  • 多视图支持,支持FreeMarker、JSP、Velocity
  • 强大的Validator后端校验功能
  • 功能齐全,拥有struts2的绝大部分功能
  • 体积小仅632K,且无第三方依赖

看起来很厉害的样子

引入maven依赖

        
            junit
            junit
            3.8.1
            test
        
        
            javax
            javaee-api
            7.0
            provided
        
        
        
            org.eclipse.jetty
            jetty-server
            9.4.9.v20180320
        

        
            com.jfinal
            jetty-server
            8.1.8
            
            provided
        
        
            com.jfinal
            jfinal
            3.3
        
        
            log4j
            log4j
            1.2.16
        
        
            mysql
            mysql-connector-java
            5.1.44
        
        
            com.alibaba
            druid
            1.0.29
        
        
            com.jfinal
            cos
            2017.5
        

在web.xml中配置



  
    jfinal
    com.jfinal.core.JFinalFilter
    
      configClass
      com.o2o.common.O2OConfig
    
  
  
    jfinal
    /*
  

可以看到,配置了filter为com.jfinal.core.JFinalFilter,配置入口类文件com.o2o.common.O2OConfig

创建入口类,继承JFinalConfig

public class O2OConfig extends JFinalConfig {
    
    /**
     * 配置常量
     */
    public void configConstant(Constants me) {
        // 加载少量必要配置,随后可用PropKit.get(...)获取值
        PropKit.use("application.properties");
        me.setDevMode(PropKit.getBoolean("devMode", false));//开发模式设置
    }
    
    /**
     * 配置路由
     */
    public void configRoute(Routes me) {
        me.add("/", IndexController.class, "/WEB-INF/view/index");//第一个参数是访问的路径,第二个参数配置Controller,第三个参数是视图的路径
        me.add("/navigation", NavigationController.class,"/WEB-INF/view/navigation");
        me.add("/manager", ManagerController.class,"/WEB-INF/view/manager");
        me.add("/role", RoleController.class,"/WEB-INF/view/role");/
    }
    
    public void configEngine(Engine me) {
        me.addSharedFunction("/WEB-INF/view/common/_layout.html");
        me.addSharedFunction("/WEB-INF/view/common/_paginate.html");
    }
    
    /**
     * 配置插件
     */
    public void configPlugin(Plugins me) {
        // 配置 druid 数据库连接池插件
        DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password"));
        me.add(druidPlugin);
        
        // ehcache插件
        EhCachePlugin ehCachePlugin = new EhCachePlugin();
        me.add(ehCachePlugin);
        
        // 配置ActiveRecord插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        arp.setShowSql(false);
        arp.setDevMode(true);
        // 所有映射在 MappingKit 中自动化搞定
        _MappingKit.mapping(arp);
        me.add(arp);
    }
    
    public static DruidPlugin createDruidPlugin() {
        return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
    }
    
    /**
     * 配置全局拦截器
     */
    public void configInterceptor(Interceptors me) {
        me.add(new LoginInterceptor());
    }
}

其他的配置文件

  • application.properties
jdbcUrl = 自己写
user = 自己写
password = 自己写
devMode = false
  • log4j.properties(省略)
  • ehcache.xml(省略)

参考资料 http://www.jfinal.com/

你可能感兴趣的:(JFinal开发平台搭建(1))