第04章Struts2的类型转换(精品).ppt
《第04章Struts2的类型转换(精品).ppt》由会员分享,可在线阅读,更多相关《第04章Struts2的类型转换(精品).ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java EE实用教程第第4章章 Struts 2的类型转换及输入校验的类型转换及输入校验4.1 Struts 2类型转换类型转换4.2 自定义类型转换器自定义类型转换器4.3 对数组类型及集合类型的转换对数组类型及集合类型的转换4.4 Struts 2的输入校验的输入校验Java EE实用教程4.1 Struts 2类型转换类型转换4.1.1 Struts 2的内置类型转换器的内置类型转换器对于大部分常用类型,程序员不用创建自己的类型转换器,因为Struts2可以完成大多数常用的类型转换,包括如下几种类型:boolean和Boolean:完成String和布尔型之间的转换。char和Char
2、acter:完成String和字符型之间的转换。int和Integer:完成String和整型之间的转换。long和Long:完成String和长整型之间的转换。float和Float:完成String和单精度浮点型之间的转换。double和Double:完成String和双精度浮点型之间的转换。Date:完成String和日期类型之间的转换,日期格式为用户请求本地的SHORT格式。数组:该类型在数据转换时,必须满足需要转换的数据中每一个元素都能转换成数组的类型。但若程序员自定义类型转换器,则要根据情况判断。集合:在使用集合类型转换器时,如果集合中的数据无法确定,可以先将其封装到一个Strin
3、g类型的集合中,然后在用到某个元素时再进行手动转换。类型转换是在页面与Action相互传递数据时发生的。Java EE实用教程4.1.2 类型转换类型转换建立项目、添加Struts2所需的类库及修改web.xml的步骤不再赘述,在第2章的例子中已经详细列举,本例取项目名为“Struts2TypeConverter”。本例建立一个简单的页面,如图4.1所示,让客户端填写用户信息,然后提交,在另一个页面展示出所填信息。图4.1项目初始页面Java EE实用教程4.1.2 类型转换类型转换本例中应用了模型传值方式,故需要建立一个模型类User.java。代码如下:packageorg.vo;impo
4、rtjava.util.Date;publicclassUserprivateStringusername;privateStringpassword;privateintage;privateDatebir;privateStringtel;/这里省略上述属性的get和set方法Java EE实用教程4.1.2 类型转换类型转换故typeconverter.jsp页面代码可以写为:类型转换 Java EE实用教程4.1.2 类型转换类型转换自定义Action类“SimpleTypeConverter.java”的代码为:packageorg.action;importorg.vo.User;
5、importcom.opensymphony.xwork2.ActionSupport;publicclassSimpleTypeConverterextendsActionSupportprivateUseruser;publicUsergetUser()returnuser;publicvoidsetUser(Useruser)this.user=user;publicStringexecute()throwsExceptionreturnSUCCESS;Java EE实用教程4.1.2 类型转换类型转换struts.xml配置如下:/show.jspJava EE实用教程4.1.2 类型
6、转换类型转换Action类处理完成后跳转的show.jsp页面代码为:类型转换显示界面姓名:密码:年龄:生日:电话:Java EE实用教程4.1.2 类型转换类型转换运行该程序,提交后出现如图4.2所示的界面。图4.2 程序提交后的页面Java EE实用教程4.2 自定义类型转换器自定义类型转换器前面说过,如果想要把输入的电话的区号和号码分开显示,Struts2的内置类型转换器就不能做到了,这时就需要程序员自定义类型转换器。这里要达到这样的目的,输入界面如图4.3所示,当输入一个正确的电话后(因为还没讲到输入校验,故这里为做测试用例先输入正确的号码),单击“提交”按钮,出现如图4.4所示的界面
7、,分别输出区号和电话号(本项目名为MyTypeConverter,从图4.4中的浏览器地址栏中可以看出)。图4.3输入界面图4.4显示界面Java EE实用教程4.2 自定义类型转换器自定义类型转换器typeconverter2.jsp页面代码非常简单,还是一个输入框及“提交”按钮:自定义类型转换器Java EE实用教程4.2 自定义类型转换器自定义类型转换器实现的Action类也正常写出:packageorg.action;importorg.vo.Tel;importcom.opensymphony.xwork2.ActionSupport;publicclassMyTypeConvert
8、erActionextendsActionSupportprivateTeltel;publicStringexecute()throwsExceptionreturnSUCCESS;publicTelgetTel()returntel;publicvoidsetTel(Teltel)this.tel=tel;Java EE实用教程4.2 自定义类型转换器自定义类型转换器对应的Tel类Tel.java实现为:packageorg.vo;publicclassTelprivateStringsectionNo;privateStringtelNo;publicStringgetSectionNo
9、()returnsectionNo;publicvoidsetSectionNo(StringsectionNo)this.sectionNo=sectionNo;publicStringgetTelNo()returntelNo;publicvoidsetTelNo(StringtelNo)this.telNo=telNo;Java EE实用教程4.2 自定义类型转换器自定义类型转换器自定义类型转换器需要实现Struts2框架提供的TypeConverter接口,但这个接口比较复杂,里面的convertValue方法参数太多,不容易实现,Struts2框架还提供了继承该接口的实现类Defau
10、ltTypeConverter。该类结构如下:publicclassognl.DefaultTypeConverterimplementsognl.TypeConverterpublicDefaultTypeConverter();publicjava.lang.ObjectconvertValue(java.util.Mapcontext,java.lang.Objectvalue,java.lang.ClasstoType);publicjava.lang.ObjectconvertValue(java.util.Mapcontext,java.lang.Objecttarget,java
11、.lang.reflect.Membermember,java.lang.StringprepertyName,java.lang.Objectvalue,java.lang.ClasstoType);Java EE实用教程4.2 自定义类型转换器自定义类型转换器该类中有两个convertValue方法,其中第2个参数比较多的是TypeConverter类中的方法,所以继承该方法后,只需重写第1个convertValue方法即可。故本例中自定义类型转换器可写为。该类主要重写了下面这个方法:publicObjectconvertValue(Mapcontext,Objectvalue,Class
12、toType)该方法中的参数有3个,下面分别介绍:context:该参数就是类型转换的上下文,也就是Action的上下文。value:value是需要转换的数据,这个数据可以是String类型,或者是需要转换的目标类型。从页面传递的数值有时可能不止一个,例如有几个输入框的名称相同,那么value就有多个值,不能用单独的String来接收值了,这时就必须用数组。这也就解释了上面为什么把value转换为字符串数组而不是字符串了。Java EE实用教程4.2 自定义类型转换器自定义类型转换器这里是要把提交的字符串类型转换为Action类中的tel属性的Tel类型,故在该Action类所在路径下编写一
13、个配置文件即可。该配置文件名称必须遵守“action类型-conversion.properties”格式,所以该例的配置文件名就必须为:“MyTypeConverterAction-conversion.properties”,并且同Action放在同一位置下,这里即放在“org.action”包下。而配置文件的内容为“变量名=包名.类名”。其中,“变量名”是Action类中转换的属性名,本例就为“tel”,“包名.类名”就是要用的自定义的类型转换器所在的包及其类名,本例就为“org.converter.MyTypeConverter”。故本例中配置文件的内容就为:tel=org.conve
14、rter.MyTypeConverterJava EE实用教程4.2 自定义类型转换器自定义类型转换器这样配置后,系统就会根据该路径找到类型转换器来完成其类型转换工作。下面就可以配置struts.xml文件:/show.jspJava EE实用教程4.2 自定义类型转换器自定义类型转换器最后是显示页面show2.jsp:自定义类型转换区号:号码:Java EE实用教程4.2 自定义类型转换器自定义类型转换器页面传递的数据被Struts2拦截,根据struts.xml中的配置找到MyTypeConverterAction类,然后在系统环境中寻找是否含有该Action类对应的MyTypeConve
15、rterAction-conversion.properties配置文件,如果找到,将其触发,对变量tel进行类型转换。完成后,执行Action类中的execute方法,最后跳转到show.jsp页面。自定义的类型转换器继承了DefaultTypeConverter类,并重写了其convertValue方法,里面用了一些ifelse语句来判断是从String向对象类型转换,还是从对象向String类型转换(实际上,类型转换也就两个方面,当接收数据时是从String向目标类型转换,而当输出时是向String类型转换),Struts2框架还提供了一个StrutsTypeConverter类,该类继
16、承了DefaultTypeConverter类。该类的部分源代码。该类已经实现了convertValue方法,并把对不同方向(String到目标类型还是目标类型到String)的处理分成两个方法来处理,程序员只需重写这两个对应的方法即可,比之继承DefaultTypeConverter方法较为简单些。故可以把上例的自定义转换器用继承该类来实现。Java EE实用教程4.2 自定义类型转换器自定义类型转换器这样可以更简单明了地完成类型转换的工作。当然,要对该转换器进行应用,需要在配置文件中进行修改,内容修改为:tel=org.converter.MyStrutsTypeConverter需要把前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 Struts2 类型 转换 精品
限制150内