spring - 使用 Spring 框架自定义动态错误页面

标签 spring exception error-handling custom-error-pages

我希望我的应用程序在引发异常时显示自定义错误页面。包含页面的响应应具有正确的 HTTP 状态,并包含异常消息以及可能来自异常对象的其他数据。

我已经尝试了两种方法,但都不起作用:

1) 从 AbstractHandlerExceptionResolver 子类返回 ModelAndView - 我可以生成我想要的任何错误页面,但它会得到 200 OK HTTP 状态。

2) 在 web.xml 中指定错误页面 - 我找不到访问异常的方法。

好的,解决了。事实证明实际上很容易。我使用了HttpServletResponse.setStatus。请注意,使用 sendError 无法正常工作。

最佳答案

您可以配置SimpleMappingExceptionResolver

<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultStatusCode" value="500" />
        <property name="defaultErrorView" value="error/500" />
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.Exception">error/500</prop>
                <prop key="SomeOtherException">error/custom</prop>
            </props>
        </property>
        <property name="statusCodes">
            <props>
                <prop key="error/500">500</prop>
                <prop key="error/custom">404</prop>
            </props>
        </property>
        <property name="order" value="0" />
    </bean>

并在 web.xml 中配置 404 错误页面(如果未找到映射,Spring Dispatcher Servlet 将返回状态代码 404)

在你的jsp中你可以访问异常抛出,如下

${exception}

关于spring - 使用 Spring 框架自定义动态错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16297501/

相关文章:

java - 确保 Spring bean 是单例的

java - hibernate.MappingException 持久类未知

java - Spring MVC 的错误处理

ajax - 通过 AJAX + jQuery + Spring MVC 请求刷新 div

java - 第二次调用 Aspectj 建议的方法被忽略

java - 从 CSV 文件读取时数组索引超出范围

java - Paper.init 未被调用

php - 为什么以及如何在此示例 PHP 代码中使用异常?

arrays - Perl数组迭代错误-发现错误,但为什么呢?

python - 这个简单的 python 代码有什么问题?