如何解决在过滤器中重定向时停止进一步处理?
开发过程中遇到在过滤器中重定向时停止进一步处理的问题如何解决?下面主要结合日常开发的经验,给出你关于在过滤器中重定向时停止进一步处理的解决方法建议,希望对你解决在过滤器中重定向时停止进一步处理有所启发或帮助;问题描述
if (sn.startsWith("www.")) {
String url = "http://" + getDefaultDomain() + req.getcontextpath() + req.getRequestURI();
httpServletResponse resp = (httpServletResponse) response;
resp.reset();
resp.setStatus(httpServletResponse.SC_MOVED_PERMANENTLY);
resp.setheader("Location", url);
return;
}
chain.doFilter(request, response);
if (sn.startsWith("www.")) {
String url = "http://" + getDefaultDomain() + req.getcontextpath() + req.getRequestURI();
httpServletResponse resp = (httpServletResponse) response;
resp.reset();
resp.setStatus(httpServletResponse.SC_MOVED_PERMANENTLY);
resp.setheader("Location", url);
} else {
chain.doFilter(request, response);
}
解决方法
我有URLRewirteFilter,它检查请求的域是否以www开头。并重定向到无www网址。当要重定向请求时,如何停止进一步的处理(调用JSF应用程序,调用servlet等)?到目前为止,我有这个:
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String sn = req.getServerName().toLowerCase();
if (sn.startsWith("www.")) {
String url = "http://" + getDefaultDomain() + req.getContextPath() + req.getRequestURI();
HttpServletResponse resp = (HttpServletResponse) response;
resp.reset();
resp.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
resp.setHeader("Location",url);
}
chain.doFilter(request,response);
}