Struts2之异常处理机制

我们在知道在软件开发中的异常处理是很重要的,作为成熟的MVC框架的Struts2也提供了异常处理处理机制,对于一场处理:用户发送请求-->Action控制器-->发现相应的异常-->转到相应的试图进行显示错误信息..


    (一)平时我们对于出现异常,可以直接使用try{}catch(){}进行拦截处理,或者使用throw new XXXException()进行抛出异常,看下下execute()方法:

     

       

      (二)这个方法直接往外把异常抛给框架了,说明我们不必使用try{}catch(){},进行处理;转而直接使用throw new XXXException()进行异常处理,即声明式的异常处理; 

        

       下面直接看下声明式的异常处理,这需要在struts.xml框架中进行配置,设置设计到一下一些元素和属性:

  • result:这个属性指定了之后,当Action中出现异常的时候,系统就会转到result素指定的页面
  • exception:在<exception-mapping.../>中,是异常处理类的异常类型,需要写全名,包括包名;

         局部和全局异常映射配置

  • 局部异常配置:把<exception-mapping>当做为Action的子元素进行配置
  • 全部异常配置:使用<global-exception-mappings>然后配置<exception-mapping>这个子元素

     下面看个例子

   ①:首先自定义一个MyCustomException类:

[java] view plaincopy
  1. package com.jiangqq.exception;  
  2. /* 
  3.  * 自定义异常类 
  4.  */  
  5. public class MyCustomException extends Exception {  
  6.     private String M_message;  
  7.   
  8.     public MyCustomException(String p_MeString) {  
  9.         super(p_MeString);  
  10.         this.M_message = p_MeString;  
  11.     }  
  12.     public String getM_message() {  
  13.         return M_message;  
  14.     }  
  15.     public void setM_message(String mMessage) {  
  16.         M_message = mMessage;  
  17.     }  
  18.   
  19. }  
      ②:看下Action当中的关键代码:

[java] view plaincopy
  1. @Override  
  2.     public String execute() throws Exception {  
  3.         if (!"Hello".equals(username)) {  
  4.             throw new MyCustomException("用户名错误.....");  
  5.         }  
  6.         if (!"World".equals(password)) {  
  7.             throw new MyCustomException("密码错误.....");  
  8.         }  
  9.         return SUCCESS;  
  10.     }  
       ③:struts.xml文件中的配置(先使用局部配置方法)


        
下面是页面显示异常信息:

       

                    


    可以看出上面是使用局部的异常的配置来进行异常处理的,下面来举例一下使用全部异常配置


    ①:先看下:使用全部的异常类型定义,但是定义result属性值对应的逻辑视图名使用局部配置


    

  ①:使全部的异常类型定义与result属性值对应的逻辑视图名都使用全部配置




      【注意】对于局部和全局的映射配置,如果我们配置了全局映射,那就会对所有的Action都有效,但是局部配置的异常只会对当前所在的Action有效。如果局部的异常映射和全局异常配置了同一个类型的异常,在本Action内部的局部异常映射会直接覆盖掉全局的配置


       (三)进行在异常的页面异常信息输出显示

    当我们抛出异常,在异常处理页面上面显示异常信息,可以使用Struts2的标签进行输出:(Struts2标签配置)

[html] view plaincopy
  1. <%@ taglib prefix="s"  uri="/struts-tags"%>  
     然后使用下面的标签:

      <s:property value="exception.message">: 输出自定义的异常的message的信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值