jFinal使用

1  jFinal入门

1.1 jFinal所需要的库文件

  将 jfinal-xxx.jar  与jetty-server-8.1.8.jar 拷贝至项目 WEB-INF\lib  下即可。

  注意:jetty-server-8.1.8.jar是开发时使用的运行环境,生产环境不需要此文件。

1.2 修改 web.xml

将如下内容添加至 web.xml

 <filter>

    <filter-name>jfinal</filter-name>

    <filter-class>com.jfinal.core.JFinalFilter</filter-class>

    <init-param>

        <param-name>configClass</param-name>

        <param-value>demo.DemoConfig</param-value>

    </init-param>

  </filter>

  <filter-mapping>

    <filter-name>jfinal</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

1.3JFinal相关生成文件

BaseModel是用于被最终的 Model 继承的基类,所有的 getter、setter方法都将生成在此文 件内,这样就保障了最终 Model 的清爽与干净,BaseModel不需要人工维护,在数据库有任何 变化时重新生成一次即可。

MappingKit用于生成table 到 Model 的映射关系,并且会生成主键/复合主键的配置,也即 在 JFinal 2.1 中无需在 configPlugin(Plugins me)方法中书写任何样板式的映射代码。

DataDictionary 是指生成的数据字典,会生成数据表所有字段的名称、类型、长度、备注、是否主键等信息。

2.JfinalConfig

2.1 概述

基于 JFinal 的 web 项目需要创建一个继承自 JFinalConfig 类的子类,该类用于对整个 web
项目进行配置。

JFinalConfig 子类需要实现五个抽象方法,如下所示:

public class DemoConfigextends JFinalConfig

	{ publicvoid configConstant(Constants me)

	{} public void configRoute(Routesme) {} 

	publicvoid configPlugin(Plugins me) {}

	public void configInterceptor(Interceptors me) {}

	public void configHandler(Handlersme) {}

}

2.2 configConstant(Constants me)

此方法用来配置 JFinal 常量值,如开发模式常量 devMode 的配置,默认视图类型 ViewType的配置,如下代码配置了 JFinal 运行在开发模式下且默认视图类型为 JSP:

public void configConstant(Constantsme)

	 { me.setDevMode(true); 

	me.setViewType(ViewType.JSP);

}

在开发模式下,JFinal 会对每次请求输出报告,如输出本次请求的 Controller、Method 以 及请求所携带的参数。JFinal 支持 JSP、FreeMarker、Velocity 三种常用视图。

2.3  configRoute(Routes me)

此方法用来配置 JFinal 访问路由,如下代码配置了将”/hello”映射到 HelloController 这个控 制器 , 通 过 以 下 的 配 置 , http://localhost/hello 将 访 问 HelloController.index() 方法, 而 http://localhost/hello/methodName 将访问到 HelloController.methodName()方法。

public void configRoute(Routes me) 

{ me.add("/hello", HelloController.class);

Routes 类主要有如下两个方法:

public Routes add(String controllerKey, Class<? extends Controller>  controllerClass, String viewPath)

public Routes add(String controllerKey, Class<? extends Controller>  controllerClass)

第一个参数 controllerKey 是指访问某个 Controller 所需要的一个字符串,该字符串唯一对 应一个 Controller,controllerKey 仅能定位到 Controller。第二个参数 controllerClass 是该 controllerKey 所对应到的 Controller。第三个参数 viewPath 是指该 Controller 返回的视图的相对 路径(该参数具体细节将在 Controller 相关章节中给出)。当 viewPath 未指定时默认值为 controllerKey。

JFinal 路由规则如下表:

url  组成

访问目标

controllerKey

YourController.index()

controllerKey/method

YourController.method()

controllerKey/method/v0-v1

YourController.method(),所带 url 参数值为:v0-v1

controllerKey/v0-v1

YourController.index(),所带 url 参数值为:v0-v1


2.4  configPlugin (Plugins me)

此方法用来配置 JFinal 的 Plugin,如下代码配置了 C3p0 数据库连接池插件与 ActiveRecord数据库访问插件。通过以下的配置,可以在应用中使用 ActiveRecord 非常方便地操作数据库。

public void configPlugin(Pluginsme)

	 { loadPropertyFile("your_app_config.txt");

	C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"));

	me.add(c3p0Plugin);

	ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);me.add(arp);

	arp.addMapping("user",User.class);

2.5   configInterceptor (Interceptors me)

此方法用来配置 JFinal  的全局拦截器,全局拦截器将拦截所有 action  请求,除非使用@Clear 在 Controller 中清除,如下代码配置了名为 AuthInterceptor 的拦截器。

public void configInterceptor(Interceptorsme)

	 { me.add(newAuthInterceptor());

}

2.6  configHandler (Handlers me)

此方法用来配置 JFinal 的 Handler,如下代码配置了名为 ResourceHandler 的处理器,Handler 可以接管所有 web 请求,并对应用拥有完全的控制权,可以很方便地实现更高层的功能性扩 展。

public void configHandler(Handlers me) { 
    me.add(new ResourceHandler());
}

  

posted @ 2018-07-12 11:18  爱生活1  阅读(125)  评论(0编辑  收藏  举报