使用Spring框架的自定义动态错误页

使用Spring框架的自定义动态错误页,spring,exception,error-handling,custom-error-pages,Spring,Exception,Error Handling,Custom Error Pages,我希望我的应用程序在引发异常时显示自定义错误页面。包含页面的响应应该具有正确的HTTP状态,并且包含异常消息,可能还包含来自异常对象的其他数据 我已经尝试了两种方法,但都不起作用: 1) 从AbstractHandlerExceptionResolver子类返回ModelAndView-我可以生成我想要的任何错误页面,但它会以200 OK HTTP状态得到服务 2) 在web.xml中指定错误页-我找不到访问异常的方法 好的,解决了。事实证明这很容易。我使用了HttpServletRespons

我希望我的应用程序在引发异常时显示自定义错误页面。包含页面的响应应该具有正确的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>

@ExceptionHandler只在每个控制器的基础上工作,错误页面不会让我处理异常
${exception}