1、从dao层、service层到action层都直接”throws Exception“,不做try-catch异常处理;
2、在struts.xml文件配置全局异常抛出,并指定结果输出页面:
<package name="csms" abstract="true" extends="struts-default">
<!-- 异常结果输出处理 -->
<global-results>
<result name="exception">exception.jsp</result> <!--注意不要加入type="redirect",会重定向-->
</global-results>
<!-- 异常处理 -->
<global-exception-mappings>
<exception-mapping result="exception" exception="java.lang.Exception"/>
</global-exception-mappings>
</package>
注:不加入type=”redirect”的原因是会重定向导致异常信息丢失。
3、编写exception.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>异常信息页</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
异常信息:<br>
<s:property value="exception.message"/> <!-- 输出throw抛出的异常对象 -->
<s:property value="exceptionStack"/> <!-- 输出异常堆栈详细信息,利于调试 -->
<s:debug /> <!-- 输出上下文值栈信息 -->
</body>
</html>
注:使用中仅使用<s:property value="exceptionStack"/>
即可。