gpt4 book ai didi

java - 为所有 404 响应创建 servlet 过滤器

转载 作者:行者123 更新时间:2023-11-30 03:04:06 25 4
gpt4 key购买 nike

我想制作一个扩展javax.filter的自定义过滤器,当404是返回静态html页面的响应状态时。但它不起作用,我想知道为什么。这是我的过滤器:

@WebFilter("/*")
public class PageNotFoundFilter implements Filter {

@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain filterChain)
throws IOException, ServletException {
HttpServletResponse httpResponse = (HttpServletResponse) response;
if (httpResponse.getStatus() == 404) {
httpResponse.sendRedirect("pages/PageNotFound.html");
}
filterChain.doFilter(request, response);

}

但是什么也没发生,为什么?

注意:我不想使用:

<error-page>
<error-code>404</error-code>
<location>/pages/PageNotFound.html</location>
</error-page>

但是过滤

最佳答案

您可以在处理请求之前(以及设置 404 错误之前)测试状态代码。

所以你需要在调用 filterChain.doFilter(request, response); 后测试状态码

但这也不起作用,因为当response.sendError(404)时被称为响应已提交,您无法重定向。

因此最好使用 <error-page>机制。

关于java - 为所有 404 响应创建 servlet 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com