首页 > 代码库 > struts2异常处理,global-results定义全局结果处理
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="http://www.mamicode.com/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"
1 package cn.itcast.sh.error; 2 3 import com.opensymphony.xwork2.ActionContext; 4 import com.opensymphony.xwork2.ActionSupport; 5 6 public class ErrorProcess extends ActionSupport { 7 private Exception exception; 8 9 public Exception getException() { 10 return exception; 11 } 12 13 public void setException(Exception exception) { 14 this.exception = exception; 15 } 16 @Override 17 public String execute() 18 { 19 ActionContext.getContext().getValueStack().push(this.exception.getMessage()); //放到值栈顶 20 return this.SUCCESS; 21 } 22 }
例子
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="http://www.mamicode.com/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> 24 <include file="struts-user.xml"></include> 25 <include file="struts-login.xml"></include> 26 </struts>
struts-user.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 <package name="user" namespace="/" extends="struts-global"> 7 <action name="UserAction_*" method="{1}" class="cn.itcast.sh.action.UserAction"> 8 <result name="userList">/user/list.jsp</result> 9 </action> 10 </package> 11 </struts>
然后 如果页面异常 都会转向 error.jsp中 显示
error.jsp可以进行错误显示
因为信息被放到栈顶了 所以可以取到
<s:property />
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。