- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 Struts2的高级应用
第7章 Struts2的高级应用 本章将讲述一些Struts2的高级应用,有一些是struts2提供的特殊功能,大部分是由struts2提供的基本功能组合而来。这些方法与设计模式的思路类型,“面对同样的问题采用经典的、可靠的、易用的方法来解决”。还有一些问题是Web开发中经常遇到的,比如类型转换,此类问题工作量巨大。Struts2也提供了完美的解决方案,使开发者从这些重复劳动中解放出来。 7.1 类型转换(Type Conversion) 在所有的基于Web的Java开发框架中,Struts2拥有最优秀的类型转换能力。通常情况下,要利用这种能力,只需要把HTML输入项(表单元素和其他GET/POST的参数)命名为合法的OGNL表达式。 7.1.1 为什么需要类型转换 在Web世界中输入输出是没有数据类型的概念的,任何数据都被当作字符串或字符串数组来传递。如果需要转化为其他类型如int进行计算就要使用Java的转换函数,在本书关于EL章节中已经介绍过,EL提供了某些转换功能,如String对基本类型的数据的转化。但这样是还是不够的,当需要将一个字符串转换成为一个更为复杂的对象时,类型转换能发挥强大的作用.例如,如果提示用户使用字符串格式(3,22)输入一个坐标,需要让Struts2完成String到Point和Point到String的转换,Struts2正是提供这样的功能。下面介绍如何配置和使用Struts2提供的类型转化。 7.1.2 定义类型转换器 类型转化器都需要实现ognl.TypeConverter类,而Struts2提供了一个很好的工具类org.apache.struts2.util.StrutsTypeConverter。该类可以让很方便的编写处理对象和字符串相互转换的类型转换器,如代码所示。 7.1.3 内建的(Built in)类型转换支持 Struts2可以自动完成大多数常用的类型转换。这也是为什么在struts2中字符串对基本类型如int的转化是自动完成的,无需任何配置和代码。已支持的与字符串之间转换类型包括: Struts2可以自动完成大多数常用的类型转换。这也是为什么在struts2中字符串对基本类型如int的转化是自动完成的,无需任何配置和代码。已支持的与字符串之间转换类型包括: String boolean/Boolean char/Character int/Integer、float/Float、long/Long、double/Double。 dates:使用当前request指定的Locale信息对应的SHORT格式。 arrays:假定每一个字符串都能够转换成对应的数组元素。 collections:如果不能确定对象类型, 将假定集合元素类型为String, 并创建一个新的ArrayList。 7.1.4 参数名称的关系 利用Struts2的类型转换最好的方式是直接装配对象(理想情况下应当直接使用业务对象(domain objects),而不是使用基本类型或字符串类型的表单参数值作为中间值,然后在Action的execute()方法中把这些中间值组装成完整的对象下面是一些提示: 使用组合的(complex)OGNL表达式。Struts2能自动创建实际对象。 使用JavaBeans。Struts2只能创建遵守JavaBean规范的对象,这需要对象提供一个无参构造函数,并包含适当的getter和setter方法。 记住将调用getPerson().setName(),但如果希望Struts2创建Person对象,那么必须包含一个setPerson()方法。 对于list和map对象,使用索引符号,如people[0].name or friends[patrick].name。通常这些HTML表单元素是在一个循环中绘制出来的, 因此可以在JSP Tags中使用iterator标签的状态属性(status attribute)或在FreeMarker Tags中使用${foo_index} 来指定这一属性。 对于多选的列表, 显然不能为每个单独的选项使用对应的属性符号来命名(由于)。替代的方法是,使用简单的名称 来命名表单元素,Struts2知道需要为每一个选中的选项创建一个新的Person对象并设定它的名字。 7.1.5 空值属性处理 Struts2还有一些非常有用的类型转换特性。对空值(Null)属性的处理可以在发现空值引用时自动创建对象。对Collection和Map的支持提供了针对Java集合的智能空值处理和类型转换。类型转换错误处理提供了一种简单的方法可以把输入校验问题和输入类型转换问题区别开。 通过把action context中的键值 CREATE_NULL_OB
您可能关注的文档
- 国外需求分析研究述评_陈冰冰.pdf
- 哈工大软件工程课程设计需求分析报告.pdf
- 参照点效应_公平偏好和_龙头企业_农户_供应链关系治理_浦徐进.pdf
- 图书馆系统的需求分析报告.pdf
- 基于OD反推的交通需求分析方法研究_纪魁.pdf
- 基于人口年龄性别结构的基本公共卫生服务需求量的核算预测_李幼子.pdf
- 基于双手交互的虚拟装配仿真技术研究_张超峰.pdf
- 太康县代理发表职称论文发表-Inventor软件三维虚拟建模机床装配论文选题题目.docx
- 大型数据中心基础环境建设规划书.pdf
- 宏观经济学阶段测试题(一).doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)