国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Manuel en ligne JFinal / configRoute(Routes me)

configRoute(Routes me)

此方法用來(lái)配置 JFinal 訪問(wèn)路由,如下代碼配置了將”/hello”映射到 HelloController 這個(gè)控 制器 , 通 過(guò) 以 下 的 配 置 , http://localhost/hello 將 訪 問(wèn) HelloController.index() 方法, 而 http://localhost/hello/methodName 將訪問(wèn)到 HelloController.methodName()方法。

public void configRoute(Routes me) 
{ me.add("/hello", 
HelloController.class);

Routes 類主要有如下兩個(gè)方法:


public Routes add(String controllerKey, Class<? extends Controller>
controllerClass, String viewPath)


public Routes add(String controllerKey, Class<? extends Controller>

controllerClass)


第一個(gè)參數(shù) controllerKey 是指訪問(wèn)某個(gè) Controller 所需要的一個(gè)字符串,該字符串唯一對(duì) 應(yīng)一個(gè) Controller,controllerKey 僅能定位到 Controller。第二個(gè)參數(shù) controllerClass 是該 controllerKey 所對(duì)應(yīng)到的 Controller。第三個(gè)參數(shù) viewPath 是指該 Controller 返回的視圖的相對(duì) 路徑(該參數(shù)具體細(xì)節(jié)將在 Controller 相關(guān)章節(jié)中給出)。當(dāng) viewPath 未指定時(shí)默認(rèn)值為 controllerKey。

JFinal 路由規(guī)則如下表:


QQ截圖20170206095411.png

從表中可以看出,JFinal 訪問(wèn)一個(gè)確切的Action(Action 定義見(jiàn) 3.2 節(jié))需要使用 controllerKey與 method 來(lái)精確定位,當(dāng)method 省略時(shí)默認(rèn)值為 index。urlPara 是為了能在 url 中攜帶參數(shù) 值,urlPara 可以在一次請(qǐng)求中同時(shí)攜帶多個(gè)值,JFinal 默認(rèn)使用減號(hào)“-”來(lái)分隔多個(gè)值(可 通過(guò)constants. setUrlParaSeparator(String)設(shè)置分隔符),在 Controller  中可以通過(guò) getPara(intindex)分別取出這些值。controllerKey、method、urlPara 這三部分必須使用正斜杠“/”分隔。 注意,controllerKey 自身也可以包含正斜杠“/”,如“/admin/article”,這樣實(shí)質(zhì)上實(shí)現(xiàn)了struts2 的 namespace 功能。


JFinal 在以上路由規(guī)則之外還提供了 ActionKey 注解,可以打破原有規(guī)則,以下是代碼示 例:

public class UserController extends Controller {
@ActionKey("/login")
public void login() 
{ render("login.html");
}


假定 UserController 的 controllerKey 值為“/user”,在使用了@ActionKey(“/login”)注解以 后,actionKey 由原來(lái)的“/user/login”變?yōu)榱恕?login”。該注解還可以讓 actionKey 中使用減號(hào)或 數(shù)字等字符,如“/user/123-456”。


如果 JFinal 默認(rèn)路由規(guī)則不能滿足需求,開(kāi)發(fā)者還可以根據(jù)需要使用 Handler 定制更加個(gè) 性化的路由,大體思路就是在 Handler 中改變第一個(gè)參數(shù) String target 的值。

JFinal 路由還可以進(jìn)行拆分配置,這對(duì)大規(guī)模團(tuán)隊(duì)開(kāi)發(fā)特別有用,以下是代碼示例:

public class FrontRoutes extends Routes {



public void config(){



add("/",IndexController.class);

add("/blog", BlogController.class);



}



}

public class AdminRoutesextends Routes{



public void config(){



add("/admin",AdminController.class);

add("/admin/user", UserController.class);



}



}

public class MyJFinalConfigextends JFinalConfig{



publicvoid configRoute(Routesme) 

{ me.add(new FrontRoutes());  // 前端路由 

me.add(new AdminRoutes()); // 后端路由



}



public void configConstant(Constantsme) {}



public void configPlugin(Pluginsme) {}



public void configInterceptor(Interceptorsme) {}



public void configHandler(Handlersme) {}



}


如上三段代碼,F(xiàn)rontRoutes 類中配置了系統(tǒng)前端路由,AdminRoutes 配置了系統(tǒng)后端路由, MyJFinalConfig.configRoute(…)方法將拆分后的這兩個(gè)路由合并起來(lái)。使用這種拆分配置不僅 可以讓 MyJFinalConfig 文件更簡(jiǎn)潔, 而且有利于大規(guī)模團(tuán)隊(duì)開(kāi)發(fā), 避免多人同時(shí)修改 MyJFinalConfig 時(shí)的版本沖突。