@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
if (target.startsWith("/styles")) {
isHandled[0] = true;
target = "/app" + target;
}
next.handle(target, request, response, isHandled);
}想把访问http://127.0.0.1/styles/xx.css
转到
http://127.0.0.1/app/styles/xx.css
修改target好像不起做用
@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
if (target.startsWith("/styles")) {
isHandled[0] = true;
target = "/app" + target;
try {
// 转发
// request.getRequestDispatcher(target).forward(request, response);
// 重定向
response.sendRedirect(target);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
next.handle(target, request, response, isHandled);
}两种方式这样修改都能起作用,请问修改target起什么作用?(jfinal3.2)
项目:JFinal
package com.jfinal.core;
中 ActionHandler :
public final void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
if (target.indexOf('.') != -1) {
return ;
}
当你的handler (修改过 target ) 调用
next.handle(target, request, response, isHandled);
时, 最终会调到ActionHandler 的 handle ,
而:
if (target.indexOf('.') != -1) {
return ;
}
jfinal不处理静态资源请求 , (上线 目前基本都使用 nginx处理静态资源, 所以请求也不会到达这里)
而容器(tomcat)是不知道你改了target(URL)的 , 自然没有什么反应了
----------------------
而 转发和重定向 , 容器(tomcat)是知道的你要去哪个URL的, 自然就能到达了