Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一种处理HTTP状态码的通用机制_Java_Servlets_Http Status Codes - Fatal编程技术网

Java 一种处理HTTP状态码的通用机制

Java 一种处理HTTP状态码的通用机制,java,servlets,http-status-codes,Java,Servlets,Http Status Codes,我知道您可以在web.xml中指定错误页面,如下所示 <error-page> <error-code>404</error-code> <location>/404.html</location> </error-page> 404 /404.html 我发现为每个错误代码列出一个页面有点乏味。我想知道在这种情况下,什么是最好的常规做法!是否有更好的方法自动生成这些页面,例如使用JSP或servlet

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

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

404
/404.html

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

Stripes提供了一些可扩展但简单的方法来处理异常。报纸上有一篇好文章和几页关于它的文章


本质上,您可以实现ExceptionHandler接口,从DefaultExceptionHandler(我们通常做的)扩展,或者在更高级的情况下使用DelegatingExceptionHandler。

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

404
/errors.jsp
500
/errors.jsp
如果您谈论的是映射本身,那么避免映射所有错误代码的一个可能的解决方案(尽管我建议您使用标准web.xml映射)是使用一个servlet过滤器,该过滤器过滤所有资源,委托对过滤器链的访问,并检查响应代码集(如果不是200)(或任何其他预定义的可接受响应,如401),然后重定向到errors.jsp页面


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

这只包括HTTP 500错误。其他5nn和所有4nn错误本身并不是由异常引起的。我认为这是相关的,因为OP询问了404之外的错误代码。这将事实上,Stripes拦截器试图绑定大多数URL,如果找不到action bean、jsp或静态资源,则抛出自己的404。要访问响应的状态代码,我将使用(这是您建议的,但有详细的实现)。