SpringMVC异常处理:自定义异常处理页面

首先铺一版书上介绍的不能用的自定义异常处理配置:

<!--
p:defaultErrorView="error"表示所有没有指定的异常,都跳转到异常处理页面error
p:exceptionAttribute="ex"表示异常处理页面中访问的异常对象变量名是ex
-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="error" p:exceptionAttribute="ex">
<!--
异常映射 exceptionMappings表示映射的异常,接受参数时一个properties
key是异常类名,value是处理异常的页面
 -->
 <property name="exceptionMappings">
  <props>
  <prop key="IOException">ioerror</prop>
  <prop key="SQLException">sqlerror</prop>
  </props>
 </property>
</bean>

可用版:

<!-- 配置使用 SimpleMappingExceptionResolver 来映射异常 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <!--
        配置异常的属性值为ex,那么在错误页面中可以通过 ${ex} 来获取异常的信息
        如果不配置这个属性,它的默认值为exception
         -->
        <property name="exceptionAttribute" value="ex"></property>
        <!-- 定义默认的异常处理页面,当该异常类型的注册时使用 --> 
    <property name="defaultErrorView" value="error"></property>
        <property name="exceptionMappings">
            <props>
                <!-- 映射sqlerror异常对应sqlerror.jsp这个页面 -->
                <prop key="SQLException">sqlerror</prop>
            </props>
        </property>
    </bean>

error.jsp:

<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" >
<head>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <meta content="text/html;charset=UTF-8"/>
<title>Error Page</title>
</head>
<body>
<h2>Error Page</h2>
<h4>${requestScope.ex.message}</h4>
</body>
</html>