已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OGNL,第五章,回顾与作业点评,为什么需要使用拦截器? 拦截器的三个执行阶段? 实现文件下载需要设置何种结果类型?,提问,2/40,预习检查,为什么要进行类型转换? OGNL中访问根元素和非根元素有什么区别? 如何使用URL标签构建一个URL地址?,提问,3/40,本章任务,编写日期类型转换器 使用OGNL实现租房信息的分页显示 使用OGNL实现租房信息的查询,4/40,本章目标,掌握Struts 2类型转换 使用OGNL访问数据,5/40,OGNL简介,什么是OGNL Object Graph Navigation Language 开源项目,取代页面中Java脚本,简化数据访问 和EL同属于表达式语言,但功能更为强大 OGNL在Struts 2中的作用 表达式语言 将表单或Struts 2标签与特定的Java数据绑定起来,用来将数据移入、移出框架 类型转换 数据进入和流出框架,在页面数据的字符串类型和Java数据类型之间进行转换,6/40,OGNL在框架中的作用,OGNL融入Struts 2 数据流入 数据流出,7/40,值栈与OGNL,值栈(ValueStack) 由Struts 2框架创建的存储区域,具有栈的特点 Action的实例会被存放到值栈中 OGNL访问值栈 按照从上到下的顺序 靠近栈顶的同名属性 会被读取,8/40,为什么进行类型转换,为什么进行类型转换 在基于HTTP协议的Web应用中 客户端请求的所有内容都以文本编码方式传输到服务器端 服务器端的编程语言却有着丰富的数据类型 Servlet中,类型转换工作由开发者自己完成,String agestr = request.getParameter(“age“); int age = Integer.parseInt(agestr);,9/40,内置类型转换器,Struts 2提供了多种内置类型转换器,自动对客户端传来的数据进行类型转换,10/40,类型转换的应用2-1,原始类型与包装类型,public class ShowOriginalAndJavaBeanAction extends ActionSupport private User user; private String message; public String execute() user=new User(); user.setName(“jbit“); user.setAge(23); setMessage(“展示原始类型和JavaBean“); return SUCCESS; , 信息: 姓名: ,11/40,类型转换的应用2-2,多值类型的数据处理 数组 集合,public class ArraysDataTransferAction extends ActionSupport private String hobbies; private Double numbers = new Double3; /省略setter&getter&execute方法 ,public class ListDataTransferAction extends ActionSupport private List hobbies; private List numbers; private List users; /省略setter&getter&execute方法 ,12/40,创建自定义类型转换器,继承StrutsTypeConverter抽象类 继承org.apache.struts2.util. StrutsTypeConverter类,#将一个或多个字符串值转换为指定的类型 public Object convertFromString(Map context, String val, Class toType) #将指定对象转化为字符串 public String convertToString(Map context, Object object),13/40,配置自定义类型转换器,应用于全局范围的类型转换器 在src目录创建perties 应用于特定类的类型转换器 在特定类的相同目录下创建一个名为ClassNperties的属性文件,转换类全名=类型转换器类全名,特定类的属性名=类型转换器类全名,14/40,处理类型转换错误4-1,如果在录入界面中输入了错误格式的内容,会出现什么情况呢?,问题,15/40,处理类型转换错误4-2,向用户输出类型转换错误的前提条件 启动StrutsConversionErrorInterceptor拦截器 拦截器已经包含在defaultStack拦截器栈中 Action要继承ActionSupport类 其实是要实现ValidationAware接口 配置input结果映射 页面使用Struts 2表单标签或标签 Struts 2表单标签内嵌了输出错误信息功能 普通HTML标签需使用标签输出转换错误,16/40,处理类型转换错误4-3,修改所有类型的转换错误信息 思路 修改xwork.default.invalid.fieldvalue键的值,实现 在struts.xml中指定资源文件的基名 在src目录下创建资源文件并修改键值,xwork.default.invalid.fieldvalue =字段“0”的值无效,17/40,处理类型转换错误4-4,定制特定字段的类型转换错误信息 思路 在Action范围的资源文件中添加I18N消息键invalid.fieldvalue.xxx,实现 在Action包下创建RegisterAperties,指定键值,invalid.fieldvalue.birthday=生日转换错误,18/40,学员操作日期类型的转换器,需求说明: 用户在客户端输入“1993/12/24”、“1993年12月24日”、“1993-12-24”格式的字符串,服务器端均可以正确的转换为日期类型 该转换适用于整个应用范围 如果输入了错误的内容,在输入页面显示提示信息:字段“0”的值无效,练习,19/40,共性问题集中讲解,常见问题及解决办法 代码规范问题 调试技巧,共性问题集中讲解,20/40,OGNL表达式注意事项,访问Bean的属性 Bean的类型必须遵循JavaBean规范 必须具有无参构造 setter/getter方法符合JavaBean规范 访问集合对象 可以使用属性名index的方式访问 列表、数组 可以使用属性名key的方式访问 Map对象 使用size或者length获取集合长度,21/40,常用的OGNL访问操作4-1,访问JavaBean,public class Address / 家庭地址 private String country; / 国家 private String city; / 城市 private String street; / 街道 . /省略各个属性的setter和getter方法 public class User /用户类 private String name; /姓名 private int age; /年龄 private Address address; /家庭地址 . /省略各个属性的setter和getter方法 ,访问name属性 访问country属性,# #user.address.country,访问name属性 访问country属性, user.address.country,22/40,常用的OGNL访问操作4-2,定义列表 访问列表,value1,value2,values3,.,valueN ,“ACCP“,“BENET“,“BETEST“,访问“ACCP “ 获取列表长度,list0 list.size,示例,语法,23/40,访问已创建的列表,key为list,常用的OGNL访问操作4-3,定义数组 访问数组,new int 1,2,3,4 new double4,访问第一个元素 获取数组长度,array0 array.length,访问已创建的数组,key为array,示例,24/40,常用的OGNL访问操作4-4,定义Map 访问Map,#key1:value1,key2:value2,key3:values3,., keyN:valueN ,#“cn“:“China“,“us“:“the United States“,“fr“:“France“,“jp“:“Japan“,访问“China “,map“cn“ ,示例,示例,语法,25/40,访问已创建的Map,key为map,Struts 2下使用OGNL3-1,访问非值栈对象,Struts 2将OGNL上下文 设置为ActionContext,Struts 2将值栈作为 OGNL上下文根对象,值栈中内容可以直接访问,访问非值栈对象需添加#前缀,26/40,Struts 2下使用OGNL3-2,访问非值栈对象,27/40,Struts 2下使用OGNL3-3,访问非值栈对象, #request.age: #session.username: #application.count: #attr.count: #country1: #country2: #request.country2:,标签将一个值赋给指定范围的变量 标签用于输出指定对象的属性值,28/40,查看ActionContext中的数据,使用查看数据 ActionContext的组成 值栈-ValueStack 非值栈-Stack Context,29/40,学员操作使用OGNL实现房屋查询,需求说明: 输入关键字,选择价格、房屋位置、房型、面积、更新时间(如果不选择,默认不限),然后单击“搜索房屋”按钮,进行查询,练习,30/40,共性问题集中讲解,常见问题及解决办法 代码规范问题 调试技巧,共性问题集中讲解,31/40,URL标签,URL标签 value属性:表示指定生成URL的地址, 表示需要传递的参数信息 name属性:表示传递的参数名称 value属性:表示传递参数所具有的值,语法,32/40,日期标签,日期标签 format属性:指定格式进行日期格式化 nice属性:该属性只有true和false两个值,用于指定是否输出指定日期与当前时间的时差,默认是false name属性:表示当前需要格式化的日期 id属性:表示引用该元素的id值,语法, ,33/40,学员操作使用URL标签,需求说明: 修改房屋信息列表页面,使用URL标签实现房屋详情页面的跳转,练习,34/40,共性问题集中讲解,常见问题及解决办法 代码规范问题 调试技巧,共性问题集中讲解,35/40,学员操作使用OGNL实现分页显示,需求说明: 修改租房网系统,实现首页房屋信息分页显示 每页显示3-5条数据 在原有的业务基础上添加分页查询的功能 修改struts.xml配置文件 使用URL标签生成分页链接,实现分页功能,练习,提示,36/40,共性问题集中讲解,常见问题及解决办法 代码规范问题 调试技巧,共性问题集中讲解,37/40,总结,Struts 2提供了非常强大的类型转换功能,提供了多种内置类型转换器,也支持开发自定义类型转换器 Struts 2框架使用OGNL作为默
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47548-2026城镇压缩天然气(CNG)供气装置
- 极端高温对血脑屏障通透性的影响机制
- 极端气候与医疗救援队建设
- 临时司机外派合同
- 材料-细胞界面附着力机制
- 小学自信心培养说课稿2025年建立自信
- 营养支持与护理
- 2026年安徽省阜阳市太和县中考二模物理试题(含答案)
- 26年壶腹周围癌靶点匹配用药指引
- 初三学习方法交流说课稿
- 《中华人民共和国农产品质量安全法》培训与解读课件
- 团员入团知识培训课件
- 机械挖树根施工方案
- 2025年宁夏地理会考试卷及答案
- 小牛串焊机培训
- 老年人手机课件
- 2025年甘肃省甘南州农林牧草科学院高层次人才引进13人备考练习题库及答案解析
- 政务礼仪培训课件模板
- 黑龙江省绥棱县2025年上半年事业单位公开招聘试题含答案分析
- 全国医师定期考核人文医学完整考试题库(含答案)
- 兽用麻醉管理办法
评论
0/150
提交评论