基于JFinal 的web项目需要创建一个 继承自JFinalConfig类的子类 ,该类用于对整个web项目进行配置。
JFinalConfig 子类需要实现五个抽象方法,如:
public class DemoConfig extends JFinalConfig {public void configConstant(Constants me) {}
public void configRoute(Routes me) {}
public void configPlugin(Plugins me) {}
public void configInterceptor(Interceptors me) {}
public void configHandler(Handlers me) {}
}
configConstant
此方法用来配置JFinal常量值,如开发模式devMode的配置,默认视图类型 ViewType的配置 ,如下代码配置了JFinal运行在开发模式下且默认视图 类型为JSP:
public void configConstant(Constants me) {me.setDevMode(true);
me.setViewType(ViewType.JSP);
}
在开发模式下,JFinal会对每次请求输出报告,如本请求的Controller、 Method以及请求所携带的参数。JFinal支持JSP、FreeMarker、Velocity三种常用视图。
configRoute
此方法用来配置JFinal访问路由,如下代码配置了将”/hello”映射到HelloController这个控制器,通过以下的配置,http://localhost/hello将访问HelloController.index()方法,而http://localhost/hello/other将访问到HelloController.other()方法。
字符串与控制类的映射是:
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返回的视图的相对路径。当viewPath未指定时默认值为controllerKey。
1.当url是http://localhost/controllerKey时,调用的是对应控制类的index()方法;当需要传参数时,url这样写:http://localhost/controllerKey/a-b-c,参数之间用中横线分开,index()方法中调用getPara(i)得到参数,i是参数对应的下标,例如a的下标是0,b的下标是1,c的下标是2。
2.当url是http://localhost/controllerKey/method时,调用的是对应控制类的method()方法。
3.JFinal在以上路由规则之外还提供了ActionKey注解,可以打破原有规则,以下是代码示例 :
public class HelloController extends Controller{@ActionKey("second")
public void second(){
System.out.println("0="+getPara(0));
System.out.println("1="+getPara(1));
System.out.println("2="+getPara(2));
renderText("yjw");
}
}
这样url可以写成http://localhost/second/1-2-3,不用写控制类的映射了。
4.如果以上所有路由规则都不能满足需求,开发者还可根据需要使用Handler定制更加个性化的路由,大体思就是在Handler中改变第一个参数String target的值。