您的位置:首页 > 编程语言 > Java开发

struts2异常处理,global-results定义全局结果处理

2014-06-11 12:52 417 查看
<global-results>定义全局结果处理

一般发生异常之后结果返回errHandler

因为errHandler是由<global-exception-mappings>关联到Exception这个类了
然后处理结果

<resultname="errHandler"type="chain">

然后它就根据

<paramname="actionName">errorProcessor</param>

找action

<actionname="errorProcessor"class="cn.itcast.sh.error.ErrorProcess">
<result>/error.jsp</result>
</action>
处理了然后返回到error.jsp



在struts.xml中

<?xmlversion="1.0"encoding="utf-8"?>
<!DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constantname="struts.devMode"value="true"/>
<constantname="struts.enable.DynamicMethodInvocation"value="false"></constant>
<!--<constantname="struts.custom.i18n.resources"value="itcast"></constant>-->
<packagename="struts-global"namespace="/"extends="struts-default">
<global-results>
<resultname="errHandler"type="chain">
<paramname="actionName">errorProcessor</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mappingresult="errHandler"exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>

<actionname="errorProcessor"class="cn.itcast.sh.error.ErrorProcess">
<result>/error.jsp</result>
</action>
</package>


然后其他包都继承它就默认使用了其中定义的错误处理

然后实现类

class="cn.itcast.sh.error.ErrorProcess"


packagecn.itcast.sh.error;

importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;

publicclassErrorProcessextendsActionSupport{
privateExceptionexception;

publicExceptiongetException(){
returnexception;
}

publicvoidsetException(Exceptionexception){
this.exception=exception;
}
@Override
publicStringexecute()
{
ActionContext.getContext().getValueStack().push(this.exception.getMessage());      //放到值栈顶
returnthis.SUCCESS;
}
}


例子

struts.xml配置

<?xmlversion="1.0"encoding="utf-8"?>
<!DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constantname="struts.devMode"value="true"/>
<constantname="struts.enable.DynamicMethodInvocation"value="false"></constant>
<!--<constantname="struts.custom.i18n.resources"value="itcast"></constant>-->
<packagename="struts-global"namespace="/"extends="struts-default">
<global-results>
<resultname="errHandler"type="chain">
<paramname="actionName">errorProcessor</param>
</result>
</global-results>
<global-exception-mappings>
<exception-mappingresult="errHandler"exception="java.lang.Exception">
</exception-mapping>
</global-exception-mappings>

<actionname="errorProcessor"class="cn.itcast.sh.error.ErrorProcess">
<result>/error.jsp</result>
</action>
</package>
<includefile="struts-user.xml"></include>
<includefile="struts-login.xml"></include>
</struts>


struts-user.xml中


<?xmlversion="1.0"encoding="utf-8"?>
<!DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<packagename="user"namespace="/"extends="struts-global">
<actionname="UserAction_*"method="{1}"class="cn.itcast.sh.action.UserAction">
<resultname="userList">/user/list.jsp</result>
</action>
</package>
</struts>


然后如果页面异常都会转向error.jsp中显示

error.jsp可以进行错误显示

因为信息被放到栈顶了所以可以取到

<s:property/>


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: