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