struts2异常处理,global-results定义全局结果处理
<global-results>定义全局结果处理 一般发生异常之后 结果返回errHandler
因为errHandler是由<global-exception-mappings>关联到Exception这个类了然后处理结果
<result name="errHandler" type="chain">
然后它就根据
<param name="actionName">errorProcessor</param>
找action
<action name="errorProcessor" class="cn.itcast.sh.error.ErrorProcess"> <result>/error.jsp</result> </action>处理了 然后 返回到 error.jsp
在struts.xml中
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 <constant name="struts.devMode" value="true" /> 7 <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant> 8 <!-- <constant name="struts.custom.i18n.resources" value="itcast"></constant> --> 9 <package name="struts-global" namespace="/" extends="struts-default"> 10 <global-results> 11 <result name="errHandler" type="chain"> 12 <param name="actionName">errorProcessor</param> 13 </result> 14 </global-results> 15 <global-exception-mappings> 16 <exception-mapping result="errHandler" exception="java.lang.Exception"> 17 </exception-mapping> 18 </global-exception-mappings> 19 20 <action name="errorProcessor" class="cn.itcast.sh.error.ErrorProcess"> 21 <result>/error.jsp</result> 22 </action> 23 </package>
然后其他包都继承它 就默认使用了其中定义的 错误处理
然后实现 类
class="cn.itcast.sh.error.ErrorProcess"
package cn.itcast.sh.error; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class ErrorProcess extends ActionSupport { private Exception exception; public Exception getException() { return exception; } public void setException(Exception exception) { this.exception = exception; } @Override public String execute() { ActionContext.getContext().getValueStack().push(this.exception.getMessage()); //放到值栈顶 return this.SUCCESS; } }
例子
struts.xml配置
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.devMode" value="true" /> <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant> <!-- <constant name="struts.custom.i18n.resources" value="itcast"></constant> --> <package name="struts-global" namespace="/" extends="struts-default"> <global-results> <result name="errHandler" type="chain"> <param name="actionName">errorProcessor</param> </result> </global-results> <global-exception-mappings> <exception-mapping result="errHandler" exception="java.lang.Exception"> </exception-mapping> </global-exception-mappings> <action name="errorProcessor" class="cn.itcast.sh.error.ErrorProcess"> <result>/error.jsp</result> </action> </package> <include file="struts-user.xml"></include> </struts>
struts-user.xml中
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="user" namespace="/" extends="struts-global"> <action name="UserAction_*" method="{1}" class="cn.itcast.sh.action.UserAction"> <result name="userList">/user/list.jsp</result> </action> </package> </struts>
然后 如果页面异常 都会转向 error.jsp中 显示
error.jsp可以进行错误显示
因为信息被放到栈顶了 所以可以取到
<s:property />
时间: 2024-11-05 01:13:04