首先铺一版书上介绍的不能用的自定义异常处理配置:
<!-- 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>