Struts2的类型转换实例
一 类型转换介绍
1.类型转换的意义
(1)个智能的MVC框架而言,不可避免的需要实现类型转换.因为B/S(浏览器/服务器)结构应用的请求参数是通过浏览器发送到服务器的,这些参数不可能有丰富的数据类型,因此必须在服务器端完成数据类型的转换
(2)架是一个表现层解决方案,理应提供类型转换的支持,Struts2提供了功能非常强大的类型转换支持.
2.表现层数据的处理
(1于web应用而言,表现层主要用于与用户交互,包括收集用户输入数据,向用户呈现服务器的状态。因此表现层的数据的流向主要有两个方向:输入数据和输出数据。
(2输入数据:则需要完成由字符串数据向多种类型数据的转化。程序通常无法自动完成,需要在代码中手动转化
(3输出数据:不管是java或是jsp都支持多种数据类型的直接输出。
表现层另外一个数据处理是:数据校验,分为客户校验和服务器端校验
3. Struts2内置的类型转换
a) String和boolean 完成字符串与布尔值之间的转换
b) String和char 往常字符串与字符之间的转换
c) String和int、Integer 完成字符串与整型之间的转换
d) String和Long 完成字符串与长整型值之间的转换
e) String和double、Double 完成字符串与双精度浮点值的转换
f) String和Float 完成字符串和单精度浮点之间的转换
g) String和Date 完成字符串和日期类型之间的转换,日期格式使用格式用户请求所在Locale的SHORT格式
h) String和数组 在默认的情况,数组元素是字符串,如果用户定义类型转换器,也可以是其它复合数据类型
i) String和Map、List
二 类型转换的实例:
1.是注册页面:
<div>
<h2>
strtus2类型转换实例
</h2>
<form action="${pageContext.request.contextPath}/reg/reg.action"
method="post">
用户名:
<input type="text" name="uname" /><br/>
年龄:
<input type="text" name="uage" /><br/>
薪资:
<input type="text" name="usalary" /><br/>
出生日期:
<input type="text" name="ubrith" /><br/>
婚否:
<input type="radio" name="umarry" value="true" />
已婚
<input type="radio" name="umarry" value="false" />
未婚
<input type="submit" value="注册" />
</form>
</div>
2. 封装一个注册的类,来设置set和get方法,用来接收jsp页面传过来的值。封装person.java类,因为只是测试转换的结果,所以直接字PersonAction中充当action类 ,来输出
package cn.csdn.hr.action;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class PersonAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String uname;
private Integer uage;
private Double usalary;
private Date ubrith;
private boolean umarry;
public PersonAction() {
super();
// TODO Auto-generated constructor stub
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Integer getUage() {
return uage;
}
public void setUage(Integer uage) {
this.uage = uage;
}
public Double getUsalary() {
return usalary;
}
public void setUsalary(Double usalary) {
this.usalary = usalary;
}
public Date getUbrith() {
return ubrith;
}
public void setUbrith(Date ubrith) {
this.ubrith = ubrith;
}
public boolean isUmarry() {
return umarry;
}
public void setUmarry(boolean umarry) {
this.umarry = umarry;
}
@Override
public String toString() {
return "PersonAction [uage=" + uage + ", ubrith=" + ubrith
+ ", umarry=" + umarry + ", uname=" + uname + ", usalary="
+ usalary + "]";
}
public String reg() {
System.out.println(toString());
return SUCCESS;
}
}
3.在strtus.xml中来接收从jsp中传过来的值
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- package的name必须是唯一的 -->
<package name="person" extends="struts-default" namespace="/reg">
action name="reg" class="cn.csdn.hr.action.PersonAction" method="reg">
<result>../regin.jsp</result>
</action>
</package>
</struts>
注意在输入日期的时候要注意格式为:2011-10-10