现在来探讨下 JFinal 的映射路径问题
1、新建工程:如何新建工程请查看我的上篇博客
新建好的工程目录如下:
工程中的 MyJFinalConfig 代码如下:
package com.xiaoye.study.jfinal;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.render.ViewType;
import com.xiaoye.study.jfinal.controller.TestController;
public class MyJFinalConfig extends JFinalConfig {
/**
* 设置一些常量
*/
@Override
public void configConstant(Constants me) {
me.setDevMode(true); // 设置开发模式
/**
* 设置视图类型为 JSp
* 如果不设置,将不能使用jsp文件作为视图文件
*/
me.setViewType(ViewType.JSP);
}
@Override
public void configRoute(Routes me) {
}
@Override
public void configPlugin(Plugins me) {
}
@Override
public void configInterceptor(Interceptors me) {
}
@Override
public void configHandler(Handlers me) {
}
}
工程中的 TestController 代码如下:
package com.xiaoye.study.jfinal.controller;
import com.jfinal.core.Controller;
public class TestController extends Controller {
public void index() {
}
}
2、启动 Debug 模式
3、测试:这里主要通过 MyJFinalConfig 的 configRoute 方法设置访问路由;通过 TestController 的 index 方法设置视图。
访问地址:http://localhost
configRoute 设置访问路由 | index 设置视图 | 结果(index.jsp 位置) |
me.add("/", TestController.class); | render("index.jsp"); || render("/index.jsp"); | WebContent\index.jsp |
me.add("/", TestController.class); | render("jsp/index.jsp"); || render("/jsp/index.jsp"); | WebContent\jsp\index.jsp |
me.add("/", TestController.class); | render("jsp/jsp/index.jsp"); || render("/jsp/jsp/index.jsp"); | WebContent\jsp\jsp\index.jsp |
me.add("/", TestController.class); | render("/WEB-INF/jsp/index.jsp"); || render("WEB-INF/jsp/index.jsp"); | WebContent\WEB-INF\jsp\index.jsp |
访问地址:http://localhost
configRoute 设置访问路由 | index 设置视图 | 结果(index.jsp 位置) |
me.add("/", TestController.class, "jsp"); | render("index.jsp"); | WebContent\jsp\index.jsp |
me.add("/", TestController.class, "jsp"); | render("/index.jsp"); | WebContent\index.jsp |
me.add("/", TestController.class, "jsp"); | 其他路径结果类似 |
说明:当设置访问路由时,第三个参数代表视图路径。如果在视图跳转时,在要跳转的视图(index.jsp)前加了“/”,则访问路由中设置的第三个参数与没有设置一样,视图路径为:WebContent + “要跳转的视图”;
如果在要跳转的视图(index.jsp)前没有加“/”,则寻找的视图的路径为 “WebContent\” + 第三个参数 + “要跳转的视图”。
注:第三个参数可以为“XXX”形式也可以为“/XXX” 形式,效果一样。
访问网址:http://localhost/test
configRoute 设置访问路由 | index 设置视图 | 结果(index.jsp 位置) |
me.add("/test", TestController.class); | render("index.jsp"); | 找不到路径 |
me.add("/test", TestController.class); | render("/index.jsp"); | WebContent\index.jsp |
me.add("/test", TestController.class); | 前面加了“/”的都能正确找到路径 |
说明:
1、访问路由仅为“/”时,视图设置时,视图路径前有“/”无“/”效果一样
2、访问路由仅为“/XXX”时,视图设置时,视图路径前必须加上有“/”,否则找不到路径
3、注:当访问路由为“/XXX”形式时,可以省略“/”不写,即仅写“test”也可以,框架会自动补上“/”。
4、访问路由设置第三参数,如果在视图跳转时,在要跳转的视图(index.jsp)前加了“/”,则访问路由中设置的第三个参数与没有设置一样,视图路径为:WebContent + “要跳转的视图”;
如果在要跳转的视图(index.jsp)前没有加“/”,则寻找的视图的路径为 “WebContent\” + 第三个参数 + “要跳转的视图”。
官方文档说明: