基于 JFinal 的 web 项目需要创建一个继承自 JFinalConfig 类的子类,该类用于对整个 web项目进行配置。JFinalConfig 子类需要实现五个抽象方法,如下所示:
1.configConstant(Constants me),此方法用来配置 JFinal 常量值,如开发模式常量 devMode 的配置,默认视图类型 ViewType的配置,如下代码配置了 JFinal 运行在开发模式下且默认视图类型为 JSP:
在开发模式下,JFinal 会对每次请求输出报告,如输出本次请求的 Controller、Method 以及请求所携带的参数。JFinal 支持 JSP、FreeMarker、Velocity 三种常用视图。
2.configRoute(Routes me) ,此方法用来配置 JFinal 访问路由,如下代码配置了将”/hello”映射到 HelloController 这个控制器, 通 过 以 下 的 配 置 ,http://localhost/hello 将 访 问 HelloController.index() 方法,而http://localhost/hello/methodName 将访问到 HelloController.methodName()方法。
Routes 类主要有如下两个方法:
第一个参数 controllerKey 是指访问某个 Controller 所需要的一个字符串,该字符串唯一对应一个 Controller,controllerKey 仅能定位到 Controller。第二个参数 controllerClass 是该controllerKey 所对应到的 Controller。第三个参数 viewPath 是指该 Controller 返回的视图的相对路径(该参数具体细节将在 Controller 相关章节中给出)。当 viewPath 未指定时默认值为controllerKey。
JFinal 路由规则如下表:
从表中可以看出,JFinal 访问一个确切的Action(Action 定义见3.2节)需要使用controllerKey与 method 来精确定位,当 method 省略时默认值为 index。urlPara 是为了能在 url 中携带参数值,urlPara 可以在一次请求中同时携带多个值,JFinal 默认使用减号“-”来分隔多个值(可通过 constants. setUrlParaSeparator(String)设置分隔符),在 Controller 中可以通过 getPara(int index)分别取出这些值。controllerKey、method、urlPara 这三部分必须使用正斜杠“/”分隔。 注意,controllerKey 自身也可以包含正斜杠“/”,如“/admin/article”,这样实质上实现了struts2 的 namespace 功能