在过滤器中重定向时停止进一步处理

如何解决在过滤器中重定向时停止进一步处理?

开发过程中遇到在过滤器中重定向时停止进一步处理的问题如何解决?下面主要结合日常开发的经验,给出你关于在过滤器中重定向时停止进一步处理的解决方法建议,希望对你解决在过滤器中重定向时停止进一步处理有所启发或帮助;

问题描述

只需return在末尾添加一条语句即可if

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);

添加一个 else

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);
}

编程问答问答

在 CSS 中设置 cellpadding 和 cellspacing?
如何在 Java 中创建内存泄漏?
浮点数被破坏了吗?
按字符串属性值对对象数组进行排序
如何加快Android模拟器的速度?
如何舍入至多 2 位小数?
使用 Git 版本控制查看文件的更改历史记录
如何在 JavaScript 中检查空/未定义/空字符串?
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注