Spring MVC自定义异常页面

jopen 10年前

因工作需要自己添加一个异常页面,弄完小结一下,具体项目配置如下:

spring-mvc.xml:

<!-- 将Controller抛出的异常转到特定View, 保持SiteMesh的装饰效果 -->   <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">      <property name="exceptionMappings">       <props>        <prop key="java.lang.Throwable">error/myException</prop>              </props>      </property>            </bean>

上面的定义异常处理部分的解释为:只要发生了Exception异常,就会自动跳转到WEB-INF/views/myException.jsp页面。

myException.jsp:可以根据需要设置自定义异常页面信息

<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" %>  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  <%@ page import="org.slf4j.Logger,org.slf4j.LoggerFactory" %>  <%response.setStatus(200);%>    <%          Exception ex = (Exception) request.getAttribute("javax.servlet.error.exception");   //记录日志   Logger logger = LoggerFactory.getLogger("myException.jsp");   logger.error(ex.getMessage(), ex);  %>    <!DOCTYPE html>  <html>  <head>   <title>Exception - 异常信息</title>  </head>    <body>   <h2>Exception - 异常信息.</h2>  </body>  </html>

在web.xml添加如下配置:

<error-page>    <exception-type>java.lang.Throwable</exception-type>    <location>/WEB-INF/views/error/myException.jsp</location>   </error-page>    <error-page>    <error-code>404</error-code>    <location>/WEB-INF/views/error/404.jsp</location>   </error-page>

这样配置完成后,在系统发生异常时,异常页面就会显示为自定义的友好页面。

当然异常类型也可以自定义。