JFinal开发平台搭建(1)

2018-06-01  本文已影响0人  写java的逗比叫z1

为什么使用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());
    }
}

其他的配置文件

jdbcUrl = 自己写
user = 自己写
password = 自己写
devMode = false

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

上一篇 下一篇

猜你喜欢

热点阅读