如何使用Java中的servlet过滤器更改传入的servlet请求url?如何使用servlet筛选器更改传入的servlet请求urlhttp://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?更新根据BalusC下面的步骤,我得出了以下代码:public class UrlRewriteFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
//
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String requestURI = request.getRequestURI();
if (requestURI.startsWith("/Check_License/Dir_My_App/")) {
String toReplace = requestURI.substring(requestURI.indexOf("/Dir_My_App"), requestURI.lastIndexOf("/") + 1);
String newURI = requestURI.replace(toReplace, "?Contact_Id=");
req.getRequestDispatcher(newURI).forward(req, res);
} else {
chain.doFilter(req, res);
}
}
@Override
public void destroy() {
//
}}的相关条目web.xml看上去是这样的:<filter>
<filter-name>urlRewriteFilter</filter-name>
<filter-class>com.example.UrlRewriteFilter</filter-class></filter><filter-mapping>
<filter-name>urlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern></filter-mapping>我尝试了服务器端和客户端重定向的预期结果。成功了,谢谢BalusC!
3 回答
森林海
TA贡献2011条经验 获得超2个赞
实施 在……里面 方法,将传入的 到 使用 HttpServletRequest#getRequestURI()抓住这条路。 直截了当 方法,如 substring(),split(),concat()等等,提取出感兴趣的部分,构成新的路径。 使用任何一种 ServletRequest#getRequestDispatcher()然后 若要将请求/响应转发到新URL(服务器端重定向,未反映在浏览器地址栏中), 或
浇铸进料 到 然后 HttpServletResponse#sendRedirect()将响应重定向到新URL(客户端重定向,反映在浏览器地址栏中)。 注册过滤器 web.xml在.上 url-pattern的 /*或 /Check_License/*,取决于上下文路径,或者如果您已经使用Servlet3.0,请使用 取而代之的是注释。
FilterChain#doFilter()
mod_rewrite.
添加回答
举报
0/150
提交
取消
