如何使filter检测用户是否请求了未找到的页面?

我想在我的应用程序中创建一个filter,以便在每个请求之前,它检测所请求的页面是否存在。 如果它不存在,它会将用户转发到错误页面。

如何检测页面是否存在?

我需要一个带filter的解决方案,而不是使用web.xml标记方法。

如果您没有身份validation,则可以。

  1. 制作Filter
  2. 使用HttpServletResponseWrapper并覆盖sendError()setStatus()
  3. 通过chain.doFilter(req, wrapper)传递包装的响应chain.doFilter(req, wrapper)
  4. 如果在包装器中得到sendError() ,请查看它是否为404。
  5. 做出适当的回应。

您可能还必须覆盖getOutputStream()getWriter()以避免在您有机会执行操作之前将响应刷新到客户端。

您可以在web.xml中直接配置它

  404 /yourCustom404.jsp  

或者创建一个filter并使用HTTPURLConnection以编程方式检测页面是否存在。

“页面存在”并不是一件轻而易举的事。 页面不需要以文件forms存在。

除了org.life.java提到的用于使用HttpURLConnection模拟请求的选项之外,您还可以创建HttpServletResponseWrapper ,覆盖setStatus方法,并且每当设置为404 ,请采取额外措施。