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 實現。

相關文章
相關標籤/搜索