3.2 SimpleMappingExceptionResolver
不需要编写代码,可以通过配置文件的方式进行全局的异常处理。
3.2.1 前台页面
示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>SimpleMappingExceptionResolver处理异常</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/exception/test2.action">SimpleMappingExceptionResolver处理异常</a>
</body>
</html>
3.2.2 ExceptionController中模拟异常
示例:
/**
* 异常处理方法
*/
@RequestMapping("/test2")
public String test2(){
System.out.println("ExceptionController的test2");
// 模拟异常 java.lang.ArithmeticException
int i = 100/0;
return "success";
}
3.2.3 配置dispatcher-servlet.xml文件
示例:
<!-- SimpleMappingExceptionResolver配置 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 支持异常列表 -->
<property name="exceptionMappings">
<props>
<!-- error为逻辑视图名称 -->
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!--
默认会把异常信息封装到Exception名称属性,所以在error.jsp页面中的${exception}中存在相应的异常信息。
-->
</bean>
运行访问结果如下图所示:
所以到目前为止,这样配置是可以的了。
当有需求要求修改异常名称时,可增加异常属性名称。
修改dispatcher-servlet.xml的配置文件,如下图所示:
<!-- SimpleMappingExceptionResolver配置 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 支持异常列表 -->
<property name="exceptionMappings">
<props>
<!-- error为逻辑视图名称 -->
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!--
默认会把异常信息封装到Exception名称属性,所以在error.jsp页面中的${exception}中存在相应的异常信息。
-->
<property name="exceptionAttribute" value="error"></property>
</bean>
由于现在的属性名称已经被修改为“error”,因此在异常页面中需要进行修改,如下所示:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
异常提示页面<br/>
异常信息:${exception}
修改了异常显示名称后:${error}
</body>
</html>
修改配置文件后,运行结果如下图所示:
由上图可以看到,异常信息在页面的${error}位置进行了展示。