




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章,类型转换和OGNL,本章任务,编写坐标和日期类型转换类使用OGNL实现租房信息的分页显示使用OGNL实现租房信息的查询,本章目标,掌握Struts2类型转换使用OGNL访问数据,为什么进行类型转换,为什么进行数据转移和类型转换在基于HTTP协议的Web应用中客户端请求的所有内容都以文本编码方式传输到服务器端服务器端的编程语言却有着丰富的数据类型Servlet中,类型转换工作由开发者自己完成,Stringagestr=request.getParameter(age);intage=Integer.parseInt(agestr);,OGNL基础,数据转移和类型转换开发Web应用程序中最常见的一个任务是从基于字符串的HTTP请求向Java语言的不同数据类型移动和转换数据数据转移和类型转换上发生在请求处理周期的两端Struts2提供了强大的数据转移和类型转换功能,由框架自动完成,谁帮助Struts2提供了这个“魔力”?是OGNL!,OGNL基础,什么是OGNLObjectGraphNavigationLanguage(对象图表导航语言)开源项目,取代页面中Java脚本,简化数据访问和EL同属于表达式语言,但功能更为强大OGNL在Struts2中的作用表达式语言将表单或Struts2标签与特定的Java数据绑定起来,用来将数据移入、移出框架类型转换数据进入和流出框架,页面中数据的字符串版本和Java数据类型之间都发生转换,OGNL基础,OGNL融入Struts2,类型转换实例,通过表单实现信息的录入,包括名称、年龄、生日、坐标信息其中的年龄、生日、坐标分别为整型、日期类型和自定义类型,而不是字符串类型,这会涉及类型转换,内置类型转换器3-1,第一步:定义和配置Action,publicclassRegisterActionextendsActionSupportprivateStringname;privateintage;privateDatebirthday;privatePointpoint;./省略各个属性的setter和getter方法,publicclassPointprivateintx;/X坐标privateinty;/Y坐标/省略setter和getter方法,success.jspregister.jsp,内置类型转换器3-2,第二步:创建页面录入页面register.jsp成功页面success.jsp,录入页面信息录入,录入成功录入信息如下名称:年龄:生日:坐标:,内置类型转换器3-3,Struts2提供了一些内置类型转换器,可以处理大多数常用的类型转换,创建自定义类型转换器,继承StrutsTypeConverter抽象类继承org.apache.struts2.util.StrutsTypeConverter类,#将一个或多个字符串值转换为指定的类型publicObjectconvertFromString(Mapcontext,Stringval,ClasstoType)#将指定对象转化为字符串publicStringconvertToString(Mapcontext,Objectobject),配置自定义类型转换器,应用于全局范围的类型转换器在src目录创建perties应用于特定类的类型转换器在特定类的相同目录下创建一个名为ClassNperties的属性文件,转换类全名=类型转换器类全名,特定类的属性名=类型转换器类全名,创建坐标类型转换器,publicclassPointConverterextendsStrutsTypeConverterpublicObjectconvertFromString(Mapcontext,Stringvalues,ClasstoType)/获取X、Y坐标Stringstr=values0;Stringxy=str.split(,);intx=Integer.parseInt(xy0);inty=Integer.parseInt(xy1);/构建坐标对象Pointpoint=newPoint();point.setX(x);point.setY(y);returnpoint;/返回坐标对象publicStringconvertToString(Mapcontext,Objectobject)/将坐标对象转换为字符串Pointpoint=(Point)object;intx=point.getX();inty=point.getY();Stringstr=(+x+,+y+);returnstr;/返回字符串,将字符串转换为坐标类型,将坐标对象转换为字符串,配置坐标类型转换器,应用于特定类在RegisterAction类同一个目录下创建文件RegisterAperties,point=cn.jbit.converter.PointConverter,Action类中的属性名,不是类名或其他,创建日期类型转换器,publicclassDateConverterextendsStrutsTypeConverterprivatefinalDateFormatdfs=newSimpleDateFormat(yyyy年MM月dd日),newSimpleDateFormat(yyyy-MM-dd),newSimpleDateFormat(yyyy/MM/dd);publicObjectconvertFromString(Mapcontext,Stringvalues,ClasstoType)StringdateStr=values0;/获取日期的字符串for(inti=0;idfs.length;i+)/遍历日期支持格式,进行转换tryreturndfsi.parse(dateStr);catch(Exceptione)continue;thrownewTypeConversionException();publicStringconvertToString(Mapcontext,Objectobject)Datedate=(Date)object;/输出的格式是yyyy-MM-ddreturnnewSimpleDateFormat(yyyy-MM-dd).format(date);,将指定格式字符串转换为日期类型,将日期转换为指定格式字符串,支持转换的多种日期格式,配置日期类型转换器,应用于全局范围src目录下创建文件perties,java.util.Date=cn.jbit.converter.DateConverter,Date类的完整类名,而不是属性名birthday或其他,处理类型转换错误4-1,如果在录入界面中输入了错误格式的内容,比如年龄、日期、坐标都随意输入字符串,会出现什么情况呢?,处理类型转换错误4-2,向用户输出类型转换错误的前提条件启动StrutsConversionErrorInterceptor拦截器拦截器已经包含在defaultStack拦截器栈中Action要继承ActionSupport类其实是要实现ValidationAware接口配置input结果映射页面使用Struts2表单标签或标签Struts2表单标签内嵌了输出错误信息功能普通HTML标签需使用标签输出转换错误,处理类型转换错误4-3,修改所有类型的转换错误信息思路修改xwork.default.invalid.fieldvalue键的值,实现在struts.xml中指定资源文件的基名在src目录下创建资源文件并修改键值,xwork.default.invalid.fieldvalue=字段“0”的值无效,处理类型转换错误4-4,定制特定字段的类型转换错误信息思路在Action范围的资源文件中添加I18N消息键invalid.fieldvalue.xxx,实现在RegisterAction相同包下创建RegisterAperties,指定键值,invalid.fieldvalue.birthday=生日转换错误,练习编写日期类型的转换器,需求说明:用户在客户端输入“1993/12/24”、“1993年12月24日”、“1993-12-24”格式的字符串,服务器端均可以正确的转换为日期类型该转换适用于整个应用范围如果输入了错误的内容,在输入页面显示提示信息:字段“0”的值无效,完成时间:15分钟,共性问题集中讲解,常见调试问题及解决办法代码规范问题,共性问题集中讲解,OGNL基础,OGNLObjectGraphNavigationLanguage开源项目,取代页面中Java脚本,简化数据访问和EL同属于表达式语言,但功能更为强大OGNL上下文OGNL表达式的计算围绕OGNL上下文进行由ognl.OgnlContext类表示,实现了Map接口OGNL上下文中可以以键值对的形式包含多个对象,可以将其中一个指定为根对象访问默认根对象,直接书写对象的属性访问其他对象必须使用“#key”前缀,常用的OGNL访问操作4-1,访问JavaBean,publicclassAddress/家庭地址privateStringcountry;/国家privateStringcity;/城市privateStringstreet;/街道./省略各个属性的setter和getter方法publicclassUser/用户类privateStringname;/姓名privateintage;/年龄privateAddressaddress;/家庭地址./省略各个属性的setter和getter方法,访问name属性访问country属性,##user.address.country,访问name属性访问country属性,nameaddress.country,Struts2下使用OGNL5-1,访问非值栈对象,Struts2将OGNL上下文设置为ActionContext,Struts2将值栈作为OGNL上下文默认根对象,值栈中内容可以直接访问,访问非值栈对象需添加#前缀,Struts2下使用OGNL5-2,访问非值栈对象,Struts2下使用OGNL5-3,访问非值栈对象,#request.age:#session.username:#application.count:#attr.count:=#country1:#country2:#request.country2:,标签将一个值赋给指定范围的变量标签用于输出指定对象的属性值,注意两者的区别,Struts2下使用OGNL5-4,访问非值栈对象,.1:2:=3:4:=5:6:,为避免出错,如果分不清一个属性值的类型是不是字符串类型的,可以直接加上%.,Struts2下使用OGNL5-5,访问Action属性,publicclassOgnlActionextendsActionSupportprivateUseruser;publicUsergetUser()returnuser;publicvoidsetUser(Useruser)this.user=user;publicStringexecute()user=newUser();user.setName(jbit);user.setAge(23);Addressaddress=newAddress();address.setCountry(China);address.setCity(beijing);address.setStreet(chengfustreet);user.setAddress(address);returnSUCCESS;,testognl4.jsp,用户名:用户名:年龄:国家:,访问Action属性无需使用“#”前缀。Struts2总是把Action实例作为值栈的根,Action,Struts.xml,JSP页面,常用的OGNL访问操作4-2,定义列表访问列表,value1,value2,values3,.,valueN,“blue,“dot,“java,访问“blue获取列表长度,list0list.size,常用的OGNL访问操作4-3,定义数组访问数组,newint1,2,3,4newdouble4,访问第一个元素获取数组长度,array0array.length,常用的OGNL访问操作4-4,定义Map访问Map,#key1:value1,key2:value2,key3:values3,.,keyN,valueN,#cn:China,us:theUnitedStates,fr:France,jp:Japan,访问China,mapcn,Struts2下使用OGNL5-4,访问集合元素,#list0:#list2:#list.size:list-iterator:,访问列表,#array0:#array2:#array.leng
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁夏安全员考试法规题库答案
- 2025年无人机巡检员巡检研发面试模拟题
- 2025年扶贫基金会面试技巧与模拟题集锦
- 2025年医院会计实施预测题及答案
- 2025年学校安全员技能考核题及答案
- 2025年司法鉴定助理环境面试模拟试卷集
- 2025年安全生产培训考试答案
- 2025年农林技术员资格考试试题及答案解析
- 机票业务培训基础知识
- 2025年礼仪活动策划师认证考试试题及答案解析
- 2025年北师大版新教材数学二年级上册教学计划(含进度表)
- 2025年职业技能鉴定-油品储运调和操作工-油品储运调和操作工(高级技师)历年参考题库含答案解析(5套)
- 初中语文学科组质量分析
- 2025年电抗器行业当前市场规模及未来五到十年发展趋势报告
- 新班主任自我介绍课件
- 2025广西中考英语真题(原卷版)
- 餐饮行业食品安全管理实务培训教材
- 反歧视艾滋病课件
- 供应商保价协议合同范本
- 2025-2030中国乒乓发球机行业市场运营模式及未来发展动向预测报告
- 2025年广东省中考历史试卷(含答案)
评论
0/150
提交评论