一尘不染

如何在Java中使用Servlet过滤器来更改传入的Servlet请求网址?

java

如何使用Servlet过滤器来更改来自的传入Servlet请求网址

http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123

http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123


阅读 323

收藏
2020-03-01

共1个答案

一尘不染

  1. 实施javax.servlet.Filter
  2. doFilter()方法中,将传入内容强制转换ServletRequestHttpServletRequest
  3. HttpServletRequest#getRequestURI()抢的路径。
  4. 使用简单的java.lang.String方法,如substring()split(),concat()等提取感兴趣的部分,构成了新的路径。
  5. 使用或ServletRequest#getRequestDispatcher()然后RequestDispatcher#forward()将请求/响应转发到新的URL(服务器端重定向,不反映在浏览器地址栏中),或将传入的内容强制转换ServletResponseHttpServletResponse然后HttpServletResponse#sendRedirect()将响应重定向到新的URL(客户端重定向,反映在浏览器地址栏)。
  6. 注册过滤器web.xml上url-pattern的/*/Check_License/*根据上下文路径上,或者如果你是在Servlet的3.0已经使用了@WebFilter注解为代替。

不要忘记在代码中添加检查,如果需要更改URL ;如果不需要,则只需调用FilterChain#doFilter(),否则它将在无限循环中调用自身。

另外,你也可以只使用现有的第三方API为你完成所有工作,例如Tuckey的UrlRewriteFilter,可以像使用Apache的方式进行配置mod_rewrite

2020-03-01