SimpleMappingExceptionResolver通过 exceptionMappings和statusCodes来确立Exception、http状态码以及view之间的映射关系。明白这个就很简单了,我们可以通过设置exceptionMappings、statusCodes的值来实现我们自定义的映射关系。
实战 页面准备
我们在WEB-INF/views/commons/error(目录自己定)新建我们自定义的错误页面,404.html, 500.html等等。
SimpleMappingExceptionResolver只实现映射关系,我们还需要通过配置web.xml来实现。
<error-page> <error-code>404</error-code> <location>/error/404.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/error/500.html</location> </error-page>
在spring-mvc配置文件中将404.html、500.html等设置为资源文件,避免被springmvc再次拦截。
<mvc:resources mapping="/error/**" location="/WEB-INF/views/commons/error/" />
配置SimpleMappingExceptionResolver。
<bean class="org.springframework.web.servlet.handler. SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <map> <entry key="ResourceNotFoundException" value="common/error/resourceNotFoundError" /> <entry key=".DataAccessException" value="common/error/dataAccessError" /> </map> </property> <property name="statusCodes"> <map> <entry key="common/error/resourceNotFoundError" value="404" /> <entry key="common/error/dataAccessError" value="500" /> </map> </property> </bean>到此,就实现我们需要的配置了。