美文网首页
JFinal开发平台搭建(1)

JFinal开发平台搭建(1)

作者: 写java的逗比叫z1 | 来源:发表于2018-06-01 00:14 被阅读0次

    为什么使用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依赖

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>7.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server -->
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
                <version>9.4.9.v20180320</version>
            </dependency>
    
            <dependency>
                <groupId>com.jfinal</groupId>
                <artifactId>jetty-server</artifactId>
                <version>8.1.8</version>
                <!-- 此处的 scope 值为 compile 仅为支持 IDEA 下启动项目 打 war 包时需要改成 provided,以免将一些无用的 
                    jar 打进去 -->
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>com.jfinal</groupId>
                <artifactId>jfinal</artifactId>
                <version>3.3</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.16</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.44</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.29</version>
            </dependency>
            <dependency>
                <groupId>com.jfinal</groupId>
                <artifactId>cos</artifactId>
                <version>2017.5</version>
            </dependency>
    

    在web.xml中配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <filter>
        <filter-name>jfinal</filter-name>
        <filter-class>com.jfinal.core.JFinalFilter</filter-class>
        <init-param>
          <param-name>configClass</param-name>
          <param-value>com.o2o.common.O2OConfig</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>jfinal</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    </web-app>
    

    可以看到,配置了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)

          本文链接:https://www.haomeiwen.com/subject/qfacsftx.html