struts2异常处理
struts 异常处理
在web开发中 经常要处理异常 这样无论用户进行怎样的操作 都不会把异常页面展现给用户 这样可以给用户一个好的感受 现在来说下struts 进行开发中进行的异常处理
在servlet中进行异常处理 在web xml中配置文件中加入以下代码:
<! 处理异常 >
<error page>
<error code> </error code>
<location>/mons/error jsp</location>
</error page>
<error page>
<exception type>java lang NullPointerException</exception type>
<location>/mons/errornull jsp</location>
</error page>
struts 进行异常处理首先需要添加exception拦截器 而默认拦截器栈已经加入了这个拦截器 所以不用特意的声明 struts 的异常映射声明有两种 全局声明和局部声明
注意:当异常发生时 struts 会根据抛出的异常去异常映射文件中寻找在继承关系上与该异常最接近的映射进行匹配 例如 action抛出一个IOException 这个异常是Exception的直接子类 所以会匹配到Exception映射 再者 action抛出一个BatchUpdateException 它既是SQLException的子类 同时也是Exception的子类 但是它和SQLException的继承关系最接近 所以它会匹配到SQLException
<struts>
<package name= default >
<global results>
<result name= login type= redirect >/Login action</result>
<result name= Exception >/Exception jsp</result>
</global results>
<global exception mappings>
<exception mapping exception= java sql SQLException result= SQLException />
<exception mapping exception= java lang Exception result= Exception />
</global exception mappings>
<action name= DataAccess class= pany DataAccess >
<exception mapping exception= pany SecurityException result= login />
<result name= SQLException type= chain >SQLExceptionAction</result>
<result>/DataAccess jsp</result>
</action>
</package>
</struts>
说明 全局异常也只有在package包下进行配置 只对下面的action起作用 在struts没有如struts中那样的异常 局部异常和全局异常的搭配使用
用三个例子说明 当访问DataAccess时如果发生异常
一个java sql SQLException将会chain到另一个action SQLExceptionAction
一个 pany SecurityException 将会重定向到Login action
任何其他继承了java lang Exception 的异常将会转至Exception jsp
值栈中的Exception值 默认情况下 发生异常时 struts 会向值栈中压入一下两个值
exception 异常对象本身
exceptionStack
stack trace的值
在jsp中可以打印出异常信息
<%@ page language= java import= java util * pageEncoding= UTF %>
<%@ taglib prefix= s uri= s %>
<!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >
<>
<head>
<title>系统异常</title>
</head>
<body>
<h >出错信息 请与管理员联系</h >
<s:actionerror/>
<p>
<s:property value= %{ssage} />
</p>
<h >详细信息</h >
<p>
<s:property value= %{exceptionStack} />
</p>
</body>
lishixinzhi/Article/program/Java/ky/201311/28331