zoukankan      html  css  js  c++  java
  • 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 />

  • 相关阅读:
    linux下nginx的安装
    [转载]QTP中DataTable的使用
    Selenium RC 与 Web Driver 的区别
    Ant 编译时 Unable to find a javac compiler的解决
    Windows如何在cmd命令行中查看、修改、删除与添加、设置环境变量
    selenium页面级自动化测试元素定位问题
    mysqldump导入导出mysql数据库
    阴符经
    将excel文件中的数据导入到mysql
    Selenium2.0 WebDriver入门指南
  • 原文地址:https://www.cnblogs.com/dobestself-994395/p/4374749.html
Copyright © 2011-2022 走看看