• 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"
     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="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 />

     
  • 相关阅读:
    Two Sum 2015年6月8日
    Word Ladder II 2015年6月4日
    Word Ladder 2015年6月3日
    华为
    《安卓网络编程》之第八篇 安卓与服务器之间通讯JSON
    星辉信息科技Odoo开发教程10-odoo开发环境准备
    星辉信息科技Odoo开发教程9-odoo创建视图02
    星辉信息科技Odoo开发教程8-odoo创建视图01
    星辉信息科技Odoo开发教程7-创建菜单项
    星辉信息科技Odoo开发教程6-配置安全权限控制02
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3781719.html
Copyright © 2020-2023  润新知