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

发布于 2024-11-09 09:24:01 字数 301 浏览 0 评论 0原文

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

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

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

I know you can specify error pages in web.xml as below

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

I find it a bit tedious to list a page for each and every error code. I was wondering what would be the best common practice in this situation! Is there a better way to generate these pages automatically such as using a JSP or servlet or via Spring or Stripes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回眸一遍 2024-11-16 09:24:01

如果您正在谈论页面本身的生成,您可以将错误代码映射到 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。

If you're talking about the generation of the page itself, you can map an error code to a jsp page, e.g.

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

if you're talking about the mapping itself, a possible solution (though I'd advise you to use the standard web.xml mapping) to avoid mapping of all error codes is to use a servlet filter which filters all resources, delegates access to the FilterChain and checks the response code set if it is not 200 (or any other predefined acceptable responses such as 401) and than redirects to the errors.jsp page.

In order to capture the response code you'll to wrap the HttpServletResponse with a HttpServletResponseWrapper implementation that saves the response code set.

蓝眼睛不忧郁 2024-11-16 09:24:01

Stripes 提供了一些可扩展但简单的方法来处理异常。 stripes 网站上有一篇很好的文章条纹书关于它。

本质上,您要么实现 ExceptionHandler 接口,从 DefaultExceptionHandler 扩展(我们通常这样做),要么使用 DelegatingExceptionHandler 来处理更高级的情况。

Stripes provides a few extensible yet simple ways to handle exceptions. There is a good writeup on the stripes website and a few pages in the Stripes book about it.

You'll essentially either implement the ExceptionHandler interface, extend from DefaultExceptionHandler (what we've typically done), or there is DelegatingExceptionHandler for more advanced situations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文