1.步骤
创建项目、导入jar包、配置文件。
配置文件主要2个:一个继承自jFinalConfig类,配置路径、常量、拦截器等,另一个_JFinalDemoGenerator类,设置model、basemodel等的生成包路径等,是否生成数据字典、表与实体类对应的生成规则等。
jFinalConfig中包括①配置路由的方法,可设置基本路径,设置Controller实体类与路径、jsp页面间的对应关系。②设置常量:主要包括读入数据库文件.txt。③配置插件:包括各个数据库插件及表与实体类映射文件_MappingKit.java。④main方法:用于该项目的启动。右键选择Java Application。⑤其他还包括一些模板及拦截器配置等。
2、configRoute方法
详情参见jfinal开发手册。
注意jfinal路由规则表。
controllerKey自身也包含正斜杠"/"
jfinal中的urlpara默认使用‘-’来分隔多个值。此外,可通过constants.setUrlParaSeparator(String)设置分隔符。还可包括负数,例如:n8或N8表示-8.
ActionKey注解更改路径;
一、Controller
参数传递及获取方法
1.getPara():从请求中获取参数。
2.getModel():接收页面表单传递过来的model对象,表单域名名称以"modelName.attrName"方式命名。
在浏览器中保存数据的方法如下:
3.setAttr(String,Object)转调了HttpServletRequest.setAttribute(String,Object),该方法可将各数据传递给View并在View中显示出来。
4.session操作方法
通过setSessionAttr(key,value)可以向session中存放数据,getSessionAttr(key)可以从session中读取数据。
5.render系列方法
渲染不同类型的视图并返回给客户端。
render("test.html");相对路径
render("/test.html");绝对路径
redirect("");重定向
6.一个controller中可包含多个action,action对应每个方法。
二、AOP
JFinal中仅有的三个概念:Interceptor、Before、Clear。
1.Interceptor可对方法进行拦截。示例如下:
2.Before
Before注解用来对拦截器进行配置,可配置Class、Method级别的拦截器。
3.Clear
拦截器从上到下依次分为Global、Inject、Class、Method四个层次,Clear用于清除自身所处层次以上层的拦截器。
clear声明在method层时将针对global、inject、class进行清除。clear声明在class层时将针对global、inject进行清除。clear注解携带参数时清除目标层中指定的拦截器。
三、ActiveRecord
ActiveRecord操作数据库的两种方式:Model和Db、Record
1.User中定义的public static final User dao对象是全局共享的,只能用于数据库查询,不能用于数据承载对象。数据承载需要使用new User().set(...)来实现。
//创建name属性为James,age属性为25的User对象并添加到数据库
new User().set("name","James").set("age",25).save();
//删除id为25的User
User.dao.deleteById(25);
2.JFinal独创Db+Record模式
Db类及其配套的Record类,提供了在Model类之外更为丰富的数据库操作功能。使用Db与Record类时,无需对数据库进行映射,Record相当于一个通用的Model。
3.声明式事务
ActiveRecord支持声明式事务,声明式事务需要使用ActiveRecordPlugin提供的拦截器来实现。示例如下: