第四章数据类型转换与数据验证_第1页
第四章数据类型转换与数据验证_第2页
第四章数据类型转换与数据验证_第3页
第四章数据类型转换与数据验证_第4页
第四章数据类型转换与数据验证_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 数据类型转换与数据验证上节回顾 OGNL语言及使用 OGNL如何访问对象 Struts2常用标签的使用 UI标签 非UI标签主要内容 Struts2中的数据类型转换 Struts2中的数据验证 验证框架的使用 Struts2国际化本讲目标 Struts2中的数据类型转换 Struts2中的数据验证 Struts2国际化OGNL基础 OGNL融入Struts 2 为什么进行类型转换 为什么进行类型转换 在基于HTTP协议的Web应用中 客户端请求的所有内容都以文本编码方式传输到服务器端 服务器端的编程语言却有着丰富的数据类型 Servlet中,类型转换工作由开发者自己完成 Struts

2、2提供了多种内置类型转换器,自动对客户端传来的数据进行类型转换,另外开发者可以开发自定义类型转换器String agestr = request.getParameter(age);int age = Integer.parseInt(agestr); 通过表单实现信息的录入,包括名称、年龄、生日、坐标信息 其中的年龄、生日、坐标分别为整型、日期类型和自定义类型,而不是字符串类型,这会涉及类型转换 类型转换实例 第一步:定义和配置Action内置类型转换器public class RegisterAction extends ActionSupport private String name;

3、private int age;private Date birthday;private Point point;. /省略各个属性的省略各个属性的setter和和getter方法方法public class Point private int x; /X坐标坐标private int y; /Y坐标坐标 /省略省略setter和和getter方法方法success.jspregister.jsp 第二步:创建页面 录入页面register.jsp 成功页面success.jsp 内置类型转换器 录入页面录入页面信息录入信息录入录入成功录入成功录入信息如下录入信息如下名称:名称:年龄:年龄:

4、生日:生日:坐标:坐标:内置类型转换器 Struts 2提供了一些内置类型转换器,可以处理大多数常用的类型转换 内置类型转换器说 明String将int、long、double、boolean、String类型的数组或者java.util.Date类型转换为字符串boolean/Boolean在字符串和布尔值之间进行转换char/Character在字符串和字符之间进行转换int/Integerfloat/Floatlong/Longdouble/Double在字符串和数值型数据之间进行转换date在字符串和日期类型之间进行转换。具体输入输出格式与当前的Locale相关继承StrutsType

5、Converter抽象类继承org.apache.struts2.util. StrutsTypeConverter类 创建自定义类型转换器 #将一个或多个字符串值转换为指定的类型将一个或多个字符串值转换为指定的类型public Object convertFromString(Map context, String val, Class toType)#将指定对象转化为字符串将指定对象转化为字符串 public String convertToString(Map context, Object object) 应用于全局范围的类型转换器 在src目录创建xwork-conversion.p

6、roperties 应用于特定类的类型转换器 在特定类的相同目录下创建一个名为ClassNperties的属性文件 配置自定义类型转换器 转换类全名转换类全名=类型转换器类全名类型转换器类全名特定类的属性名特定类的属性名=类型转换器类全名类型转换器类全名创建坐标类型转换器 public class PointConverter extends StrutsTypeConverter public Object convertFromString(Map context, String values, Class toType) /获取获取X、Y坐标坐标Str

7、ing str = values0;String xy = str.split(,);int x = Integer.parseInt(xy0);int y = Integer.parseInt(xy1);/构建坐标对象构建坐标对象Point point = new Point();point.setX(x);point.setY(y);return point; /返回坐标对象返回坐标对象public String convertToString(Map context, Object object) /将坐标对象转换为字符串将坐标对象转换为字符串Point point = (Point)

8、object;int x = point.getX();int y = point.getY();String str = ( + x + , + y + );return str; /返回字符串返回字符串将字符串转换为坐标类型将字符串转换为坐标类型将坐标对象转换为字符串将坐标对象转换为字符串 应用于特定类 在RegisterAction类同一个目录下创建文件RegisterAperties配置坐标类型转换器 point=cn.jbit.converter.PointConverterAction类中的属性名,不是类中的属性名,不是类名或其他类名或其他创

9、建日期类型转换器 public class DateConverter extends StrutsTypeConverter private final DateFormat dfs = new SimpleDateFormat(yyyy年年MM月月dd日日),new SimpleDateFormat(yyyy-MM-dd),new SimpleDateFormat(yyyy/MM/dd) ; public Object convertFromString (Map context, String values, Class toType) String dateStr = values0;

10、/ 获取日期的字符串获取日期的字符串for (int i=0;idfs.length;i+) / 遍历日期支持格式,进行转换遍历日期支持格式,进行转换try return dfsi.parse(dateStr); catch (Exception e) continue;throw new TypeConversionException();public String convertToString (Map context, Object object) Date date = (Date) object;/ 输出的格式是输出的格式是yyyy-MM-ddreturn new SimpleDa

11、teFormat(yyyy-MM-dd).format(date);将指定格式字符串转换为日期类型将指定格式字符串转换为日期类型将日期转换为指定格式字符串将日期转换为指定格式字符串支持转换的多种日期格式支持转换的多种日期格式 应用于全局范围 src目录下创建文件perties 配置日期类型转换器 java.util.Date=cn.jbit.converter.DateConverterDate类的完整类名,而不是类的完整类名,而不是属性名属性名birthday或其他或其他 如果在录入界面中输入了错误格式的内容,比如年龄、日期、坐标都随意输入字符串,会出

12、现什么情况呢?处理类型转换错误 向用户输出类型转换错误的前提条件 启动StrutsConversionErrorInterceptor拦截器 拦截器已经包含在defaultStack拦截器栈中 Action要继承ActionSupport类 其实是要实现ValidationAware接口 配置input结果映射 页面使用Struts 2表单标签或标签 Struts 2表单标签内嵌了输出错误信息功能 普通HTML标签需使用标签输出转换错误 处理类型转换错误 修改所有类型的转换错误信息 思路 修改xwork.default.invalid.fieldvalue键的值处理类型转换错误 实现实现在在s

13、truts.xml中指定资源文件中指定资源文件的基名的基名在在src目录下创建资源文件并修目录下创建资源文件并修改键值改键值xwork.default.invalid.fieldvalue =字段字段“0”的值无效的值无效 定制特定字段的类型转换错误信息 思路 在Action范围的资源文件中添加I18N消息键invalid.fieldvalue.xxx 处理类型转换错误实现实现在在RegisterAction相同包下创相同包下创建建RegisterAperties,指定键值指定键值invalid.fieldvalue.birthday=生日转换错误生日转换错误 对用户登录添加

14、表单验证功能 Struts 2提供了数据验证机制,需要继承ActionSupport类来完成Action开发 ActionSupport类不仅对Action接口进行简单实现,同时增加了验证、本地化等支持 Struts 2的数据校验 修改LoginActionStruts 2的数据校验public class LoginAction extends ActionSupport public void validateExecute() if(“admin.equals(username) & “123.equals(password) Map session = ActionContext.ge

15、tContext().getSession();if(session.containsKey(CURRENT_USER) session.remove(CURRENT_USER);session.put(CURRENT_USER, username); else super.addActionError(用户名为空,或用户名密码不匹配。用户名为空,或用户名密码不匹配。);public String execute() return SUCCESS;继承继承ActionSupport验证出错,指定错误提示信息验证出错,指定错误提示信息验证成功验证成功 修改JSP页面Struts 2的数据校验用户

16、名:用户名:密密  码:码:显示服务器返回的错误信息显示服务器返回的错误信息 修改struts.xml文件Struts 2的数据校验/success.jsp/login.jsp“input”结果:指定用户输入不结果:指定用户输入不能通过验证时的返回页面能通过验证时的返回页面 对用户注册功能进行验证 用户名:不能为空,长度在6和10之间 密码:不能为空,密码长度=6 确认密码:必须和密码相同 电话:不能为空,符合电话号码格式 用户姓名:不能为空,长度在2和4之间 使用验证框架进行验证 用户无需编码,在外部配置文件中指定某个字段的验证类型,并提供出错信息即可 使用验证框架可以减

17、轻开发者负担,提高开发效率验证框架 第一步:创建RegisterAction 实现对用户注册的处理 第二步:在struts.xml中配置action 通过“input”指定验证错误时需返回的页面验证框架public class RegisterAction extends ActionSupport private User user; /用户信息用户信息private String repassword;/确认密码确认密码public String execute() return SUCCESS;/index.jsp/page/register.jsp 第三步:创建注册页面register

18、.jsp 第四步:创建验证文件验证框架 第五步:使用验证框架编写验证规则 用户名:不能为空,长度在6和10之间 验证框架true用户名不能为空用户名不能为空106用户名长度须在用户名长度须在$minLength和和$maxLength之间之间 第五步:使用验证框架编写验证规则 密码:不能为空,密码长度=6 密码和确认密码必须一致 验证框架 user.password=repassword密码和确认密码必须相同密码和确认密码必须相同 第五步:使用验证框架编写验证规则 电话号码:不能为空,符合电话号码格式 验证框架电话号码不能为空电话号码不能为空(d3,4-)0,1(d7,8)$电话号码格式不正确

19、电话号码格式不正确 国际化(Internationalization:I18N) 使程序在不做任何修改的情况下,可以在不同国家或地区和不同语言环境下,按照当地的语言和格式习惯显示字符 本地化(Localization:L10N) 一个国际化的程序,当它运行在本地机器时,能够根据本地机器的语言和地区设置显示相应字符国际化和本地化 国际化和本地化 Java程序的国际化思路 将程序中的提示信息、错误信息等放在资源文件中,为不同国家/语言编写对应资源文件 资源文件由很多key-value对组成,key保持不变,value随国家/语言不同而不同 这些资源文件使用共同的基名,通过在基名后面添加语言代码、国

20、家和地区代码来进行区分资源文件名说 明ApplicationResources_perties所有英文语言的资源ApplicationResources_perties所有的中文语言的资源ApplicationResources_zh_CN.properties针对中国大陆的、中文语言的资源ApplicationResources_zh_HK.properties针对中国香港的、中文语言的资源ApplicationRperties默认资源文件,如果请求的资源文件不存在,将调用它的资源进行显示 实现对用户注册功能的国际化 对英文用户显示英文界面和验

21、证错误信息 对中国香港用户显示繁体中文界面和验证错误信息 对其他用户显示简体中文界面和验证错误信息 实现国际化步骤 在struts.xml中指定资源文件的基名及存储路径 按照需求创建对应的三个资源文件,存放相应资源 实现JSP页面信息的国际化显示 实现验证错误信息的国际化显示使用Struts 2实现国际化 第一步:指定资源文件的基名及存储路径 第二步:创建对应的三个资源文件 位置 在src目录下,或者直接在WEB-INF/classes目录 名称 message_perties message_zh_HK.properties perties 使用Struts

22、 2实现国际化 第三步:实现JSP页面信息的国际化显示 使用Struts 2实现国际化 注册页面注册页面#message_pertiesregister.page= HouserRent-User Registerregister.title=New User Registername=Namesubmit=Register Now#message_zh_HK.propertiesregister.page=青鳥租房青鳥租房-用戶註冊用戶註冊register.title=新用戶註冊新用戶註冊name=用戶名用戶名submit=立即註冊立即註冊#pertiesr

23、egister.page=青鸟租房青鸟租房-用户注册用户注册register.title=新用户注册新用户注册name=用户名用户名submit=立即注册立即注册资源文件资源文件 第四步:实现验证错误信息的国际化显示 使用Struts 2实现国际化#message_pertiesname.null=Name cannot be nullname.length=Name should be between $minLength and $maxLengthpassword.null=Password cannot be nullpassword.length=Mininum password length is $minLength#message_zh_HK.propertiesname.null=用戶名不能為空用戶名不能為空name.length=用戶名長度必須在用戶名長度必須在 $minLength和和 $maxLength之間之間password.null=密碼長度不能為空密碼長度不能為空password.length=密碼長度必須大於等於密碼長度必須大於等於 $minLength#pertiesname.null=用户名不能为空用户名不能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论