一.struts2对异常的处理
1.自定义局部异常:
2.自定义全局异常:
3.异常执行的优先级
>>当同时出现全局和局部异常时,局部异常优先,即局部异常优先于全局异常执行,如果全局和局部异常相同,那么将以局部异常为准.
>>当异常出现父子关系时,子异常优先.如java.lang.ArithmeticException是java.lang.Exception的子类.如果同时进行配置的话,那么以java.lang.ArithmeticException为准.
如:
/WEB-INF/success.jsp
/WEB-INF/sonException.jsp
/WEB-INF/fatherException.jsp
二.struts2中的类型转换
1、内置类型转换器
HTTP没有类型的概念,只能将表单的参数,以String或String[]的方式接收.
>>1).struts2提供了内置的类型转换器,它能将string类型和8种基本类型自动转换.
>>2).struts2的内置类型转换器,能将java.util.Date与String类型自动转换,但Date类型的字符串格式必须为yyyy-MM-dd的格式;同时struts2会自动检测日期的合法性,如01-33这种就不能通过.
>>3).内置转换器,不能将String类型转换成任意javaBean类型,这里需要使用自定义转换器.
下面以实例来演示:
Address.java
package type;
/**
* @ClassName: Address
* @Description: 定义一个address model
* @author: amosli
* @email:amosli@infomorrow.com
* @date Jan 26, 2014 1:53:33 AM
*/
public class Address {
private String province;// 省份
private String city;// 城市
private String area;// 区域
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
View Code
TypeAction.java
packagetype;importjava.util.Date;importcom.opensymphony.xwork2.ActionSupport;/*** @ClassName: TypeAction
* @Description: 本类主要是讲解类型转换
*@author: amosli
* @email:amosli@infomorrow.com
* @date Jan 26, 2014 1:00:35 AM*/
public class TypeAction extendsActionSupport{private static final long serialVersionUID = -2558635842755603468L;private String username;//姓名
private Integer age;//年龄
private Float salary;//薪水
private Date birthday;//生日
private Address address;//地址
publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}publicInteger getAge() {returnage;
}publicAddress getAddress() {returnaddress;
}public voidsetAddress(Address address) {this.address =address;
}public voidsetAge(Integer age) {this.age =age;
}publicFloat getSalary() {returnsalary;
}publicDate getBirthday() {returnbirthday;
}public voidsetBirthday(Date birthday) {this.birthday =birthday;
}public voidsetSalary(Float salary) {this.salary =salary;
}public String execute() throwsException {returnSUCCESS;
}
}
View Code
type_struts.xml
/p>
"http://struts.apache.org/dtds/struts-2.3.dtd">
/WEB-INF/type_success.jsp
type.jsp
View Code
sturts.xml
/p>
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
View Code
type.jsp
View Code
type_success.jsp
用户名:
年龄:
薪水:
生日:
地址:
View Code
效果截图:
1),不填写地址
2),查看结果,基本类型的数据自动转换成功
3),填写地址
4),这里配置了result中的input,一时出错页面将转发到type.jsp,并使用标签自带的错误消息回显.