Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验

上传人:杨**** 文档编号:52248650 上传时间:2018-08-19 格式:PPT 页数:43 大小:1.32MB
返回 下载 相关 举报
Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验_第1页
第1页 / 共43页
Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验_第2页
第2页 / 共43页
Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验_第3页
第3页 / 共43页
Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验_第4页
第4页 / 共43页
Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验》由会员分享,可在线阅读,更多相关《Java EE 课程ppt课件 第4章 Struts 2类型转换及输入校验(43页珍藏版)》请在金锄头文库上搜索。

1、4.1 Struts 2内置类型转换器4.2 自定义类型转换器4.3 数组和集合类型的转换4.4 Struts 2输入校验4.1.1 常用类型转换器 对于大部分常用类型,程序员不用创建自己的类型转换器,因为Struts 2可以 完成大多数需要用到的默认功能,这些常用的类型转换器包括如下几种。 boolean和Boolean:完成String和布尔型之间的转换。 char和Character:完成String和字符型之间的转换。 int和Integer:完成String和整型之间的转换。 long和Long:完成String和长整型之间的转换。 float和Float:完成String和单精度浮

2、点型之间的转换。 double和Double:完成String和双精度浮点型之间的转换。 Date:完成String和日期类型之间的转换,日期格式为用户请求本地的 SHORT格式。 数组:该类型在数据转换时,必须满足需要转换的数据中每一个元素都能转 换成数组的类型。但若程序员自定义类型转换器,则要根据情况判断。 集合:在使用集合类型转换器时,如果集合中的数据无法确定,可以先将其 封装到一个String类型的集合中,然后在用到某个元素时再进行手动转换。【实例4.1】建立一个简单的页面,如图4.1所示,让客户端填写用户信息, 然后提交,在另一个页面上显示出所填信息。1创建Struts 2项目 建立

3、项目,取项目名为“Struts2TypeConverter”。加载Struts 2包及修改 web.xml文件,配置Struts 2,操作同【实例2.1】的第1步、第2步,不再赘述。 2构造模型传值 本例中应用了模型传值方式,故需要构造一个JavaBean(模型类)User.java 。代码如下: package org.vo; import java.util.Date; public class User private String username;/姓名 private String password;/密码 private int age;/年龄 private Date bir;

4、/生日 private String tel;/电话 /这里省略上述属性的get和set方法 故converter.jsp页面代码可以写为:类型转换3编写控制器Action 自定义Action类“SimpleTypeConverter.java”的代码如下: package org.action; import org.vo.User; import com.opensymphony.xwork2.ActionSupport; public class SimpleTypeConverter extends ActionSupport private User user; public Use

5、r getUser() return user; public void setUser(User user) this.user = user; public String execute() throws Exception return SUCCESS; struts.xml配置如下: /show.jsp4编写JSP Action类处理完成后跳转到show.jsp页面,代码如下:类型转换显示界面姓名: 密码: 年龄: 生日: 电话:运行该程序,提交后出现如图4.2所示的界面。4.2.1 继承DefaultTypeConverter类实现转换器 下面以一个简单实例说明。 【实例4.2】在图

6、4.3中的输入栏输入一个正确完整的电话后,单击【提交】按 钮,出现如图4.4所示的界面,分别输出区号和电话号。1创建Struts 2项目 建立项目,取项目名为“MyTypeConverter”。加载Struts 2包及修改web.xml文 件,配置Struts 2,操作同【实例2.1】的第1步、第2步,不再赘述。 2构造模型传值 本例依然采用模型传值,构造模型Tel类,Tel.java实现为: package org.vo; public class Tel private String sectionNo;/区号 private String telNo;/电话号 public String

7、 getSectionNo() return sectionNo; public void setSectionNo(String sectionNo) this.sectionNo = sectionNo; public String getTelNo() return telNo; public void setTelNo(String telNo) this.telNo = telNo; 对应converter2.jsp页面的代码写为:自定义类型转换器3编写控制器Action 编写Action类“MyTypeConverterAction”的代码为: package org.action

8、; import org.vo.Tel; import com.opensymphony.xwork2.ActionSupport; public class MyTypeConverterAction extends ActionSupport private Tel tel; public String execute() throws Exception return SUCCESS; public Tel getTel() return tel; public void setTel(Tel tel) this.tel = tel; 在struts.xml文件中配置:/show2.js

9、p4实现类型转换器 自定义类型转换器需要实现Struts 2框架提供的TypeConverter接口,但这个 接口比较复杂,里面的convertValue方法参数太多,不容易实现,Struts 2框架于 是提供了继承该接口的实现类DefaultTypeConverter。该类结构如下: public class ognl.DefaultTypeConverter implements ognl.TypeConverter public DefaultTypeConverter(); public java.lang.Object convertValue( java.util.Map cont

10、ext, java.lang.Object value, java.lang.Class toType ); public java.lang.Object convertValue( java.util.Map context, java.lang.Object target, java.lang.reflect.Member member, java.lang.String prepertyName, java.lang.Object value, java.lang.Class toType ); 该类中有两个convertValue方法,其中第2个参数比较多的是TypeConverte

11、r类中的方法,所以继承该方法后,只需重写第1个convertValue方法即可。故本例中自定义类型转换器可写为。该类主要重写了下面这个方法:public Object convertValue(Map context, Object value, Class toType) 该方法中的参数有3个,下面分别进行介绍。 context:该参数就是类型转换的上下文,也就是Action的上下文。 value:value是需要转换的数据,这个数据可以是String类型,或者是需要转换的目标类型。从页面传递的数值有时可能不止一个,例如,有几个输入框的名称相同,那么value就有多个值,不能用单独的Stri

12、ng来接收值了,这时就必须用数组。这也就解释了上面为什么把value转换为字符串数组而不是字符串了。 toType:准备转换成的目标类型。5注册类型转换器类型转换器编写完成后,需要注册,否则Struts 2框架不知道用哪个类型转换器对提交的数据进行转换。这里要把提交的字符串类型转换为Action类中的tel属性的Tel类型,故在该Action类所在路径下编写一个配置文件即可。该配置文件名称必须遵守“action类名-conversion.properties”格式,所以本例的配置文件名为:“MyTypeConverterAction-conversion.properties”,并且同Acti

13、on放在同一位置(这里是org.action包)下。在MyTypeConverterAction-conversion.properties文件中写入如下注册信息:tel=org.converter.MyTypeConverter配置文件内容为“变量名=包名.类名”。6编写JSP 最后编写显示页面show2.jsp,代码如下:自定义类型转换区号:号码:【实例4.2】的运行流程。首先,页面传递的数据被Struts 2拦截,根据struts.xml中的配置找到MyTypeConverterAction类,然后在系统环境中寻找是否含有该Action类对应的MyTypeConverterAction-

14、conversion.properties配置文件,如果找到,将其触发,对变量tel进行类型转换。完成后,执行Action类中的execute方法,最后跳转到show2.jsp页面。可以看出,自定义的类型转换器继承了DefaultTypeConverter类,并重写了其convertValue方法,里面用了一些ifelse语句来判断是从String向对象类型转换,还是从对象向String类型转换(实际上,类型转换也就两个方向:当接收数据时是从String向目标类型转换,而输出时则是向String类型转换),这样难免有点麻烦,Struts 2框架还提供了一个StrutsTypeConverter

15、类,该类继承了DefaultTypeConverter类。该类的部分源代码如下: public abstract class StrutsTypeConverter extends DefaultTypeConverter public Object convertValue(Map context, Object o, Class toClass) if (toClass.equals(String.class) return convertToString(context, o); else if (o instanceof String) return convertFromString

16、(context, (String) o, toClass); else if (o instanceof String) return convertFromString(context, new String(String) o, toClass); else return performFallbackConversion(context, o, toClass);protected Object performFallbackConversion(Map context, Object o, Class toClass) return super.convertValue(context, o, toClass);public abstract Object convertFromString(Map context, Strin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > Java

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号