用了JFinal框架一段时间了,虽说不是完全掌握,但也有了一定了解,下面总结目前所知道的知识点:
一个基本的JFinal项目,只需配置xxconfig(extends JFinalConfig)、xxcontroller(extends Controller)、xxmodel(extends Model)
1. config里需要实现5个抽象方法 configConstant、configRounte、configPlugin、configInterceptor、configHandler. 这些JFinal官方文档里有详细说明。interceptor和Handler一般用不到~
以下参考官方文档:
configConstat配置JFinal常量值,如开发模式常量 devMode 的配置,默认视图类型 ViewType的配置
public void configConstant(Constants me) {
me.setDevMode(true); //JFinal运行在开发模式下
me.setViewType(ViewType.JSP); //设置默认视图类型为JSP
}
在开发模式下,JFinal 会对每次请求输出报告,如输出本次请求的 Controller、Method以及请求所携带的参数。JFinal支持 JSP、FreeMarker、Velocity三种常用视图。
configRounte配置 JFinal访问路由
public void configRoute(Routes me) {
me.add("/hello", HelloController.class);
}
configPlugin
配置
JFinal
的
Plugin
public void configPlugin(Plugins me) {
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);
}
configInterceptor配
置
JFinal
的全局拦截器,全局拦截器将拦截所有
action
请求,除非使用
@Clear
在
Controller
中清除
public void configInterceptor(Interceptors me) {
me.add(new AuthInterceptor());
}
configHandler
配置
JFinal
的
Handler ,Handler
可以接管所有
web
请求,并对应用拥有完全的控制权,可以很方便地实现更高层的功能性扩展。
public void configHandler(Handlers me) {
me.add(new ResourceHandler());
}
2. controller里是页面调用的方法,是定义Action方法的地方,是组织Action的一种方式
public class HelloController extends Controller {
public void index() {
renderText("此方法是一个action");
}
public void test() {
renderText("此方法是一个action");
}
}
public class User extends Model<User> {
public static final User dao = new User();
}
以上代码中的User 通过继承 Model,便立即拥有的众多方便的操作数据库的方法。在 User 中声明的 dao静态对象是为了方便查询操作而定义的,该对象并不是必须的。基于 ActiveRecord 的 Model 无需定义属性, 无需定义 getter、 setter方法,无需 XML 配置,无需 Annotation 配置, 极大降低了代码量。