处理HTTP状态代码的通用机制

时间:2011-05-24 22:38:58

标签: java servlets http-status-codes

我知道您可以在web.xml中指定错误页面,如下所示

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

我发现列出每个错误代码的页面有点乏味。我想知道在这种情况下最常见的做法是什么!有没有更好的方法来自动生成这些页面,例如使用JSP或servlet,还是通过Spring或Stripes?

2 个答案:

答案 0 :(得分:2)

如果您正在谈论页面本身的生成,您可以将错误代码映射到jsp页面,例如

<error-page>
    <error-code>404</error-code>
    <location>/errors.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/errors.jsp</location>
</error-page>

如果您正在讨论映射本身,可能的解决方案(尽管我建议您使用标准的web.xml映射)以避免映射所有错误代码是使用过滤所有资源的servlet过滤器,委托访问FilterChain并检查响应代码集(如果它不是200(或任何其他预定义的可接受响应,如401),而不是重定向到errors.jsp页面。

为了捕获响应代码,您将使用保存响应代码集的HttpServletResponseWrapper实现来包装HttpServletResponse。

答案 1 :(得分:0)

Stripes提供了一些可扩展但简单的方法来处理异常。 on the stripes website有一个很好的写作Stripes book和几页,关于它。

你基本上要么实现ExceptionHandler接口,要么从DefaultExceptionHandler扩展(我们通常做的事情),或者有更高级的情况下有DelegatingExceptionHandler。