Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26213407
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: Java

2008-12-18 17:41:28

异常处理后,能够提供友好的用户界面,而不是一些错误的代码信息.

利用struts2的异常处理机制可以很方便的实现异常处理,你不再 需要在Action中捕获异常,并抛出相关的异常了,这些都交给拦截器来帮你做了。在struts-default.xml中己经设置了拦截器,因此我们 可以直接使用声明式异常.struts2-default-xml声明的拦截器如下:

 

Xml代码 复制代码
  1. <interceptors>  
  2. <interceptor name="exception"   
  3. class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/>  
  4. interceptors>  

 

 


异常的类型可以分为两种:局部异常映射和全局异常映射

 

当Action抛出异常时,会在局部中和全局中查找与之相匹配的异常,如果局部和全局中都有满足的异常映射,以局部的为准. 例子说明:

 

action:

 

Java代码 复制代码
  1. public class LogonAction {  
  2.     private String userName;  
  3.     private String userPwd;  
  4.     public String getUserName() {  
  5.         return userName;  
  6.     }  
  7.     public void setUserName(String userName) {  
  8.         this.userName = userName;  
  9.     }  
  10.     public String getUserPwd() {  
  11.         return userPwd;  
  12.     }  
  13.     public void setUserPwd(String userPwd) {  
  14.         this.userPwd = userPwd;  
  15.     }  
  16.     public String execute() throws Exception{  
  17.         if(userName.equals("callan") && userPwd.equals("fjf")){  
  18.             ActionContext.getContext().getSession().put("userName""callan");  
  19.             return "succee";  
  20.         } else {  
  21.             throw new SQLException(“用户名密码不正确”);  
  22.         }  
  23.     }  
  24. }  

 

配置文件:

Xml代码 复制代码
  1. <package name="logon" extends="struts-default">  
  2.         
  3.        <global-exception-mappings>  
  4.             <exception-mapping result="all" exception="java.lang.Exception">  
  5.                 exception-mapping>  
  6.         global-exception-mappings>  
  7.         <action name="logon" class="com.LogonAction">  
  8.             <result name="succee">/logon/welcome.jspresult>  
  9.             <result name="error">/logon/error.jspresult>  
  10.             <exception-mapping result="sql" exception="java.sql.SQLException"/>exception-mapping>  
  11.             <exception-mapping result="nullPoint" exception="java.lang.NullPointerException">exception-mapping>  
  12.             <result name="nullPoint">/logon/nullpoint.jspresult>  
  13.             <result name="sql">/logon/sql.jspresult>  
  14.              <result name="all">/logon/all.jspresult>  
  15.         action>  
  16.     package>  

 

上面是个用户登陆的action及配置,定义了两个局部异常和一个全局异常
当输入的用户名和密码不为callan和fjf时,会抛出SQLException异常,局部异常配置起作用,会定向到sql.jsp,如果注释局部sql异常,全局异常起作用,定向到all.jsp

 

 

可以使用Struts2的标签来输出异常信息

例如sql.jsp页面


   
 
可以输出 用户名密码不正确
阅读(2138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~