@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的, 自然就能到达了