struts2异常处理

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>
View Code

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

然后实现 类

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 />

你可能感兴趣的:(struts2)