Servlet过滤器重定向:如何在chain.doFilter(request,resp)之后重定向;
Posted
技术标签:
【中文标题】Servlet过滤器重定向:如何在chain.doFilter(request,resp)之后重定向;【英文标题】:Servlet Filter redirect: How to redirect after chain.doFilter(request,resp); 【发布时间】:2014-08-13 08:15:07 【问题描述】:我有一个 servlet 过滤器类。在 doFilter 函数内部,我想在 chain.doFilter(request,response) 调用后重定向到自定义 URL。
现在我知道我不能同时调用 chain.doFilter(request,response) 和 response.redirect("www.customURL.com")。 但想法是,过滤器链完成后浏览器重定向到customUrl。
如何在我的servlet过滤器类的doFilter函数中实现这一点(显然实现了过滤器类)。
谢谢。
【问题讨论】:
【参考方案1】:简短的回答:你不能。
稍长一点的答案:重新排序您的过滤器。请注意要在重定向过滤器之前添加的所有过滤器。过滤器按添加到web.xml
的顺序进行处理。
【讨论】:
【参考方案2】:如果您包装响应对象并实现任何将响应显式或隐式提交为 NO-OP 的调用,则可以执行此操作。这样做实际上是在丢弃过滤器链生成的响应。
【讨论】:
以上是关于Servlet过滤器重定向:如何在chain.doFilter(request,resp)之后重定向;的主要内容,如果未能解决你的问题,请参考以下文章
从 Web 应用程序中的 servlet 过滤器重定向到上一页
从 servlet 过滤器重定向到 jsf 会返回未呈现为 html 的实际 jsf 代码