W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
此方法用來配置 JFinal 訪問路由,如下代碼配置了將”/hello”映射到 HelloController 這個(gè)控 制器 , 通 過 以 下 的 配 置 , http://localhost/hello 將 訪 問 HelloController.index() 方法, 而 http://localhost/hello/methodName 將訪問到 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 是指訪問某個(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。
url 組成 | 訪問目標(biāo) |
controllerKey | YourController.index() |
controllerKey/method | YourController.method() |
controllerKey/method/v0-v1 | YourController.method(),所帶 url 參數(shù)值為:v0-v1 |
controllerKey/v0-v1 | YourController.index(),所帶 url 參數(shù)值為:v0-v1 |
從表中可以看出,JFinal 訪問一個(gè)確切的Action(Action 定義見 3.2 節(jié))需要使用 controllerKey與 method 來精確定位,當(dāng)method 省略時(shí)默認(rèn)值為 index。urlPara 是為了能在 url 中攜帶參數(shù) 值,urlPara 可以在一次請(qǐng)求中同時(shí)攜帶多個(gè)值,JFinal 默認(rèn)使用減號(hào)“-”來分隔多個(gè)值(可 通過constants. setUrlParaSeparator(String)設(shè)置分隔符),在 Controller 中可以通過 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 由原來的“/user/login”變?yōu)榱恕?login”。該注解還可以讓 actionKey 中使用減號(hào)或 數(shù)字等字符,如“/user/123-456”。
JFinal 路由還可以進(jìn)行拆分配置,這對(duì)大規(guī)模團(tuán)隊(duì)開發(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è)路由合并起來。使用這種拆分配置不僅 可以讓 MyJFinalConfig 文件更簡(jiǎn)潔, 而且有利于大規(guī)模團(tuán)隊(duì)開發(fā), 避免多人同時(shí)修改 MyJFinalConfig 時(shí)的版本沖突。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: