JFinalConfig

      基于 JFinal 的 web 项目须要建立一个继承自 JFinalConfig 类的子类,该类用于对整个 web项目进行配置。JFinalConfig 子类须要实现五个抽象方法,以下所示:                                                                                                                                                                                                                                     前端

       1.configConstant(Constants me),此方法用来配置 JFinal 常量值,如开发模式常量 devMode 的配置,默认视图类型 ViewType的配置,以下代码配置了 JFinal 运行在开发模式下且默认视图类型为 JSP:web

      

    

      在开发模式下,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 功能。url

    

      JFinal 在以上路由规则以外还提供了 ActionKey 注解,能够打破原有规则,如下是代码示例:spa

       假定 UserController 的 controllerKey 值为“/user”,在使用了@ActionKey(“/login”)注解之后,actionKey 由原来的“/user/login”变为了“/login”。该注解还可让 actionKey 中使用减号或数字等字符,如“/user/123-456”。插件

       若是 JFinal 默认路由规则不能知足需求,开发者还能够根据须要使用 Handler 定制更加个性化的路由,大致思路就是在 Handler 中改变第一个参数 String target 的值。

      JFinal 路由还能够进行拆分配置,这对大规模团队开发特别有用,如下是代码示例: 

       如上三段代码,FrontRoutes 类中配置了系统前端路由,AdminRoutes 配置了系统后端路由,MyJFinalConfig.configRoute(…)方法将拆分后的这两个路由合并起来。使用这种拆分配置不只可让 MyJFinalConfig 文件更简洁,并且有利于大规模团队开发,避免多人同时修改MyJFinalConfig 时的版本冲突。

       

      3. configPlugin (Plugins me) 

      此方法用来配置 JFinal 的 Plugin,以下代码配置了 C3p0 数据库链接池插件与 ActiveRecord数据库访问插件。经过如下的配置,能够在应用中使用 ActiveRecord 很是方便地操做数据库。

       JFinal 插件架构是其主要扩展方式之一,能够方便地建立插件并应用到项目中去。 

 

       4.configInterceptor (Interceptors me) 

       此方法用来配置 JFinal 的全局拦截器,全局拦截器将拦截全部 action 请求,除非使用@Clear 在 Controller 中清除,以下代码配置了名为 AuthInterceptor 的拦截器。

       JFinal 的 Interceptor 很是相似于 Struts2,但使用起来更方便,Interceptor 配置粒度分为Global、Class、Method三个层次,其中以上代码配置粒度为全局。Class与Method级的Interceptor配置将在后续章节中详细介绍。

       5.configHandler (Handlers me)     

       此方法用来配置JFinal的Handler,以下代码配置了名为ResourceHandler的处理器,Handler能够接管全部 web 请求,并对应用拥有彻底的控制权,能够很方便地实现更高层的功能性扩展。

 

 

 

        afterJFinalStart()与 beforeJFinalStop() 

        JFinalConfig中的afterJFinalStart()与beforeJFinalStop()方法供开发者在JFinalConfig继承类中覆盖。JFinal 会在系统启动完成后回调 afterJFinalStart()方法,会在系统关闭前回调beforeJFinalStop()方法。这两个方法能够很方便地在项目启动后与关闭前让开发者有机会进行额外操做,如在系统启动后建立调度线程或在系统关闭前写回缓存。

 

       

        PropKit   

        PropKit 工具类用来操做外部配置文件。PropKit 能够极度方便地在系统任意时空使用,以下是示例代码:

 

        

       如上代码所示,PropKit 可同时加载多个配置文件,第一个被加载的配置文件可使用PorpKit.get(…)方法直接操做,非第一个被加载的配置文件则须要使用 PropKit.use(…).get(…)来操做。PropKit 的使用并不限于在 YourJFinalConfig 中,能够在项目的任何地方使用,JFinalConfig 的 getProperty 方法其底层依赖于 PropKit 实现。

相关文章
相关标签/搜索