Jfinal的web项目,首先需要创建一个继承JfinalConfig类的子类:
public class BpmsConfig extends JFinalConfig
1.configConstant 此方法用来配置 JFinal 常量值
@Override
public void configConstant(Constants me) {
PropKit.use("config.properties");//加载配置文件
me.setDevMode(PropKit.getBoolean("devMode"));//开发者模式,为true时开启
me.setViewType(ViewType.JSP);//以jsp为视图文件,JFinal 支持 JSP、FreeMarker、Velocity 三种常用视图。
me.setEncoding("UTF-8");
//文件上传最大多少,这里设置300M
me.setMaxPostSize(300 * 1024 * 1024);
}
在开发模式下,JFinal 会对每次请求输出报告,如输出本次请求的 Controller、Method 以及请求所携带的参数。如:
JFinal action report -------- 2017-03-04 12:30:02 ------------------------------
Controller : org.bpms.controller.admin.UserController.(UserController.java:1)
Method : index
Interceptor : org.bpms.interceptor.GlobalInterceptor.(GlobalInterceptor.java:1)
Parameter : _=1457065802122 tabid=e594ce962faa404babe4c8ce2ccaf177
2.configHandler 此方法用来配置JFinal的处理器
@Override
public void configHandler(Handlers me) {
me.add(new BpmsHandler());
}
3.configInterceptor 此方法用来配置 JFinal 的全局拦截器,全局拦截器将拦截所有 action 请求,除非使用@Clear 在 Controller 中清除
@Override
public void configInterceptor(Interceptors me) {
me.add(new GlobalInterceptor());
}
4.configPlugin 此方法用来配置 JFinal的插件
@Override
public void configPlugin(Plugins me) {
Prop p = PropKit.use("config.properties");//非第一次使用该配置文件
//加载数据库配置
c3p0Plugin = new C3p0Plugin(p.get("jdbc_url"),
p.get("jdbc_username"), p.get("jdbc_password"));
me.add(c3p0Plugin);
//自动扫描model,绑定table
AutoTableBindPlugin arp = new AutoTableBindPlugin(c3p0Plugin , SimpleNameStyles.LOWER);
me.add(arp);
//配置snaker插件
SnakerPlugin snakerPlugin = new SnakerPlugin(c3p0Plugin , p.getProperties());
me.add(snakerPlugin);
// Quartz调度插件---配合snaker工作流,使用数据库来持久化
QuartzPlugin quartzPlugin = new QuartzPlugin();
me.add(quartzPlugin);
//简单任务调度--内存持有,无持久化
SchedulerPlugin sp = new SchedulerPlugin("job.properties");
//添加插件
me.add(sp);
//使用redis缓存方案时使用weixin作为主缓存,打开连接
if (p.getBoolean("redis_mode")){
RedisPlugin redisPlugin = new RedisPlugin("weixin", p.get("redis_host"), p.get("redis_pass"));
me.add(redisPlugin);
}
}
最后一个configRoute,此方法用来配置 JFinal 访问路由,可以有两种方式:
public void configRoute(Routes me) {
me.add("/admin", AdminController.class);
}
这样就将"/admin"映射到AdminController这个控制器了,如果访问/admin则会访问到AdminController的index()方法
还有一种写法:
@Override
public void configRoute(Routes me) {
me.add(new AdminRoutes());
}
在这个方法里加载这个类,然后在这个类里配置映射:
public class AdminRoutes extends Routes {
@Override
public void config() {
add("/admin", AdminController.class);
add("/menu", MenuController.class);
add("/role", RoleController.class);
add("/user", UserController.class);
add("/dept", DeptController.class);
add("/log", LogController.class);
add("/upload", FileUploadController.class);
add("/article",ArticleController.class);
//微信
add("/weixin", WeixinController.class);
//test
add("/news", NewsController.class);
}
}