我们在知道在软件开发中的异常处理是很重要的,作为成熟的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类:
package com.jiangqq.exception;
/*
* 自定义异常类
*/
public class MyCustomException extends Exception {
private String M_message;
public MyCustomException(String p_MeString) {
super(p_MeString);
this.M_message = p_MeString;
}
public String getM_message() {
return M_message;
}
public void setM_message(String mMessage) {
M_message = mMessage;
}
}
②:看下Action当中的关键代码:
@Override
public String execute() throws Exception {
if (!"Hello".equals(username)) {
throw new MyCustomException("用户名错误.....");
}
if (!"World".equals(password)) {
throw new MyCustomException("密码错误.....");
}
return SUCCESS;
}
③:struts.xml文件中的配置(先使用局部配置方法)
下面是页面显示异常信息:
可以看出上面是使用局部的异常的配置来进行异常处理的,下面来举例一下使用全部异常配置
①:先看下:使用全部的异常类型定义,但是定义result属性值对应的逻辑视图名使用局部配置
①:使全部的异常类型定义与result属性值对应的逻辑视图名都使用全部配置
【注意】对于局部和全局的映射配置,如果我们配置了全局映射,那就会对所有的Action都有效,但是局部配置的异常只会对当前所在的Action有效。如果局部的异常映射和全局异常配置了同一个类型的异常,在本Action内部的局部异常映射会直接覆盖掉全局的配置
(三)进行在异常的页面异常信息输出显示
当我们抛出异常,在异常处理页面上面显示异常信息,可以使用Struts2的标签进行输出:(Struts2标签配置)
<%@ taglib prefix="s" uri="/struts-tags"%>
然后使用下面的标签:
<s:property value="exception.message">: 输出自定义的异常的message的信息
好了今天就学习到这里,上面有很多讲的不到位之处,还望大家提出来共同交流,共同提高
代码下载链接:http://download.csdn.net/detail/jiangqq781931404/4194357