JFinal在线手册

浏览12059
更新时间2022-04-11

此方法用来配置 JFinal 访问路由,如下代码配置了将”/hello”映射到 HelloController 这个控 制器 , 通 过 以 下 的 配 置 , http://localhost/hello 将 访 问 HelloController.index() 方法, 而 http://localhost/hello/methodName 将访问到 HelloController.methodName()方法。

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。第二个参数 controllerClass 是该 controllerKey 所对应到的 Controller。第三个参数 viewPath 是指该 Controller 返回的视图的相对 路径(该参数具体细节将在 Controller 相关章节中给出)。当 viewPath 未指定时默认值为 controllerKey。

JFinal 路由规则如下表:


QQ截图20170206095411.png

从表中可以看出,JFinal 访问一个确切的Action(Action 定义见 3.2 节)需要使用 controllerKey与 method 来精确定位,当method 省略时默认值为 index。urlPara 是为了能在 url 中携带参数 值,urlPara 可以在一次请求中同时携带多个值,JFinal 默认使用减号“-”来分隔多个值(可 通过constants. setUrlParaSeparator(String)设置分隔符),在 Controller  中可以通过 getPara(intindex)分别取出这些值。controllerKey、method、urlPara 这三部分必须使用正斜杠“/”分隔。 注意,controllerKey 自身也可以包含正斜杠“/”,如“/admin/article”,这样实质上实现了struts2 的 namespace 功能。


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

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


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


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

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

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) {}



}


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

相关视频

更多

免费

php8,我来也
初级php8,我来也

321838次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382466次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282853次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13418次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时 | 62.5万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时 | 39.7万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时 | 73.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号