基于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
此方法用來配置 JF inal 常量 值,如開發模式 devMode 的配置,默認 視 圖類型 ViewType 的配置 的配置 ,如下 代碼 配置了 JFinal 運行在開發模式下且默認視圖 類型為 JSP:
public void configConstant(Constants me) {
me.setDevMode(true);
me.setViewType(ViewType.JSP);
}
在開發模式下 ,JFinal會對每次 請求輸出報告,如本會對每次 請求輸出報告,如本請求的 Controller、 Method 以及請求所攜帶的參數。 以及請求所攜帶的參數。JFinal 支持 JSP 、 FreeMarker、Velocity三種常 用視圖 。
configRoute
此方法用來配置 JF inal 訪問 路由 ,如下 代碼 配置了 將 ”/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。第二個參 數 controll er Class 是該 controllerKey所對應 到的 Controller。第三個參數 view Path 是指 該 Controller返回的視圖 的相對路徑。當 view Path未指定時默認值為 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定制更加個性化的路由,大體思就是在Handl er 中改變第一個參數 String target的值。