第9单元Struts2进阶与提高ppt课件.ppt_第1页
第9单元Struts2进阶与提高ppt课件.ppt_第2页
第9单元Struts2进阶与提高ppt课件.ppt_第3页
第9单元Struts2进阶与提高ppt课件.ppt_第4页
第9单元Struts2进阶与提高ppt课件.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第9Struts2进阶与提高 单元描述 Struts2完全颠覆了Web编程的传统 在Struts2的Action类中 完全去掉了request response等ServletAPI 该框架提供了一整套用于简化JSP编程的标签 开发者只需要稍作配置就可以实现各种常用效果 该框架可以自动完成数据转换 赋值 这些对Web编程是个革命性的转变 Struts2同样提供配置式的数据校验功能 本单元将重点介绍该框架在国际化 标签库 数据校验等方面的技术 单元目标 了解Struts2标签库的配置和使用 了解Struts2在国际化方面的实现 熟悉Struts2数据转换和赋值的相关技术 掌握Struts2数据校验的功能 9 1任务1引入性案例 任务描述 使用已经学过的有关Struts2框架的知识 完成用户注册系统的开发 任务目标 本案例的主要任务就是在当前知识体系结构的基础上完成用户注册模块的设计和实现 并分析不足之处 9 1 1案例分析 现在根据已学过的Struts2的相关技术知识 对第7单元的引入性案例进行修改 完成用户登录模块 相关需求分析与第7单元引入性案例相同 工程目录结构图 运行效果 9 1 2设计步骤 1 创建用户注册模块的视图界面 register jsp registerSuccess jsp 2 创建资源信息文件 Application properties 3 创建Action RegisterAction java 4 为解决中文乱码问题 创建过滤器Servelt CharacterEncodingFilter java 9 1 2设计步骤 5 创建配置文件web xml 6 配置struts xml 7 配置struts properties 8 发布工程 9 1 3具体实现 1 创建用户注册模块的视图界面register jsp registerSuccess jsp2 创建资源信息文件 Application properties该文件的内容与第7单元的引入性案例 RegisterStruts工程 的Application properties文件内容相同 只是将其中 的文本删除 9 1 3具体实现 3 创建Action RegisterAction java4 为解决中文乱码问题 创建过滤器Servelt CharacterEncodingFilter java该文件和之前提到的代码相同 文件的配置也相同 5 创建配置文件web xml该文件的配置与第8单元的进阶式案例中有关web xml的配置相同 只是将默认欢迎页面改为 register jsp 9 1 3具体实现 6 配置struts xml7 配置struts properties让Struts2框架识别资源配置文件的代码为 struts custom i18n resources Application 8 发布工程 9 1 4Struts2工作流程 访问注册页面 提交表单启动action处理数据 Struts2截获action请求 查找web xml找到Struts2分发器Filter struts xml配置action请求对应的Action类 将提交的数据交给Action实例 反射调用RegisterAction中的execute 方法 跳转到相应的JSP页面显示结果 并求其Action实例 9 1 5分析不足之处 1 一个优秀的注册程序 不仅仅是输入用户名和密码 在较为严格的系统中需要录入极为丰富的数据 为了方便用户录入 就需要各种控件帮助用户完成录入工作 如单选按钮 复选框 文件上传按钮 下拉框 日期选择器等等 Struts2丰富的标签库可以完成该项工作 9 1 5分析不足之处 2 一个优秀产品是面向国际的 因此支持国际化将是不容忽视的目标 Struts2完全支持国际化 9 1 5分析不足之处 3 由于Struts2完全放弃了ActionForm 但是由于Java本身的缺陷 比如时间的表示方面等等 前台表单传来的数据 转去给后台Java处理时 数据类型的转换往往会加大程序员的工作量 那么Struts2有没有更好的解决方案呢 Struts2内建的类型转换器可以有效解决这类问题 9 1 5分析不足之处 4 Struts1的Validator验证框架可以有效解决数据校验的问题 那么Struts2如何解决此类问题呢 Struts2的Validation框架可以有效解决这类问题 9 2任务2Struts2标签库 任务描述 与Struts1一样 Struts2也提供了大量的标签 Struts2的标签库用于简化JSP编程 开发者只需要在标签中做少量配置 就可以实现各种常见效果 Struts2标签与Action联系比较紧密 使用标签后 Struts2会自动完成JSP层的显示数据 在Action层采集数据等工作 9 2任务2Struts2标签库 任务目标 Struts2提供了大量Struts1中没有的标签 如日期选择器 树形结构 主题 模板等 同时Struts2还提供了对DWR技术 AJAX技术的支持 使Struts2可以完成各种AJAX的效果 该任务的主要目标就是认识和了解Struts2标签 9 2 1Struts2标签分类 9 2 2表单标签 Struts2中所有的表单处理类都继承于org apache Sponents UIBean类 在该类中定义了一些通用属性 这些属性在所有的表单标签中都存在 感兴趣的读者可以阅读UIBean类的源代码 在UIBean类中定义的通用属性可分为模板相关属性 JavaScript相关属性 tooltip相关属性 通用属性四大来 课本200页表9 1到9 4分别对这四大类通用属性进行了详细描述 9 2 3非表单标签 非表单标签主要用于生成一些非可视化的元素 或根据服务端的处理结果显示一些信息 如div actionerror等 表9 6给出了Struts2的非表单标签的名称和使用说明 9 2 4控制标签 Struts2的非UI标签包括控制标签和数据标签 其中控制标签主要完成条件逻辑 循环逻辑的控制 以及对集合的合并 排序等操作 控制标签有9个 其名称和功能描述如表9 7所示 9 2 5数据标签 数据标签主要用于提供各种和数据访问相关的功能 如创建一个类的对象实例 输出国际化信息 包括其它的Web资源等 数据标签的名称和使用说明如表9 8所示 9 3任务3Struts2国际化 任务描述 Struts2的国际化功能做得相当出色 在Struts2中可以读取资源文件中的国际化信息 并可以将这些国际化信息应用到不同的地方 如数据校验 数据类型转换等的出错信息 JSP页面的国际化信息等 任务目标 如何使用Struts2框架解决程序的国际化问题就是该任务的主要目标 9 3 1Struts2中的全局资源文件 假设全局资源文件的baseName为Application 则在struts properties文件中可以通过如下代码设置 struts custom i18n resources Application在struts xml文件中配置struts custom i18n resources常量可以通过如下代码完成 9 3 2在Struts2中访问国际化信息 1 使用标签在JSP页面中直接输出国际化信息 2 使用表单标签输出国际化信息 如 3 如果Action类从ActionSupport类继承 可以通过ActionSupport类的getText 方法来返回资源文件中的国际化信息 9 3 3对引入性案例实现国际化 实例1 在引入性案例的基础上进行修改 将其实现国际化 1 7 3 2节创建了Application en US properties文件和Application zh CN properties文件 将这两个文件复制到引入性案例的 src 路径下 并删除这两个文件中的 和 标记 2 保存后重新发布工程 9 3 3对引入性案例实现国际化 9 4任务4数据类型转换器 任务描述 用户录入的信息通过网页进行收集 不管是什么类型 都是以字符串的形式提交给服务端 Java是强类型语言 想要接受客户端提交的信息 就必须将这些信息转换成相应的Java数据类型 在传统的Web系统中 这些工作必须由开发人员自己完成 如果使用了MVC框架 那么数据类型转换的工作可以由MVC框架代替 9 4任务4数据类型转换器 任务目标 Struts2提供了强大的类型转换机制 Struts2的类型转换是基于OGNL表达式的 只要HTML表单元素 文本框 选择框等 的name属性按照OGNL的规则命名 提交后 系统那个就会将提交的数据转换成Java相应的数据类型 该任务的目标即使学习Struts2框架在数据类型转换方面的技术 9 4 1传统的类型转换 在传统的Web程序中 非字符串类型的信息需要手工将其转换成相应的Java数据类型 例如年龄需要转换成整数类型数据 生日需要转换成日期类型数据 9 4 1传统的类型转换 实例2 如果在注册信息中存在年龄和生日相关信息 请给出相应的数据类型转换的解决方案 1 假设在服务器端将注册信息封装在UserBean类中 年龄 age整型生日 birthday日期型 2 首先对age birthday请求参数进行类型转换后 之后才能赋值 9 4 1传统的类型转换 3 在相应的Servlet程序中 通过request获取age的请求信息 4 在相应的Servlet程序中 通过request获取birthday的请求信息 以上解决问题的方案虽然可以完成数据类型转换的任务 但是需要手工编写大量代码 那么基于MVC架构的Struts2框架优势如何实现数据类型转换的呢 9 4 2Struts2内建的类型转换器 在Struts2框架中提供了强大的类型转换机制 开发人员可以使用Struts2的这个机制来进行任意复杂的数据类型转换 9 4 3其它转换方式 虽然在Struts2中可以自动将简单类型 数组和集合类型 但是在实际应用中还是不够的 在Struts2中 可以通过编写基于OGNL的类型转换器来完成基于类数据的转换任务 9 4 3其它转换方式 Struts2默认的转换器并不总能满足需要 例如 输入时间 Struts2只能转换形如12 00 00的格式 如果输入12 00就会报错 也有一些数据类型Struts转换不了 因此需要自定义数据转换器 9 4 3其它转换方式 实例3 自定义一个日期时间转换器 用于接收各种常用的时间格式 1 所用知识点的简介 2 创建名为 DateConvertor 的工程 该工程中最重要的类就是实现日期时间数据转换的DateTimeConvertor java 其代码如下 9 4 3其它转换方式 3 转换器的配置在xwork conversion properties中 该文件的代码如下 4 该实例的目标是实现3种日期类型在DateTimeConvertorAction类中进行转换 转换器的调用对Action而言是透明的 转换器Action类为 ConvertorAction java 代码如下 5 struts xml的配置 代码如下 9 4 3其它转换方式 6 web xml文件的配置代码如下 7 用户界面包括convert jsp和convertSuccess jsp 文件代码如下 8 运行结果如图9 10 9 11所示 9 5任务5数据校验 任务描述 在Struts2中同时提供了客户端和服务器端校验机制 Struts2中的客户端校验也是采用了JavaScript 但是这些JavaScript代码是由Struts2自动添加的 而Struts2的服务端校验位开发人员提供了多种选择 如validate方法 Validation框架等 除此之外 开放性的Struts2框架还允许开发人员编写自定义的校验器 任务目标 本任务目标是了解并学会使用Struts2框架的数据验证方法 9 5 1使用validate方法进行数据校验 1 引入性案例是通过用户自己编写的函数实现了数据校验功能 2 Struts2框架提供了两个和校验有关的接口 分别是Validateable和ValidationAware Validateable接口存在唯一一个validate 方法 Struts2框架在调用Action的execute 之前 会自动调用validate 方法 9 5 1使用validate方法进行数据校验 3 但是validate 方法没有返回值 这就意味着无法通过validate 方法的返回值来验证输入数据是否通过Struts2的校验 此时需要使用另外一个校验感知接口ValidationAware 该接口中存放了一系列的addXXX 方法 这些方法可以将校验过程中发生的错误信息添加到系统中 实际上是添加到一个Map对象中 9 5 1使用validate方法进行数据校验 4 为此Struts2在提供了ActionSupport类 实现了这两个接口 用于完成数据校验 9 5 1使用validate方法进行数据校验 实例4 在本单元实例1的基础上对RegisterStruts2工程进行修改 使其通过validate方法完成数据校验 对RegisterAction类进行修改 修改后的代码如下 运行结果和实例1相同 9 5 2使用Validation框架进行数据校验 validate 方法可以完成数据校验 但仍需要编写大量代码 而且代码复用率不高 Struts2提供了Validation校验框架 通过该框架 只需要在配置文件中配置要校验的字段和校验规则 就可以对相应的字段进行校验 9 5 2使用Validation框架进行数据校验 实例5 在本单元实例4的基础上继续对RegisterStruts2工程进行修改 使其通过Validation框架完成数据校验 1 对Action类进行修改 删除其中的数据校验方法 2 在RegisterAction类所在路径下创建名为RegisterAction validation xml的配置文件 9 5 2使用Validation框架进行数据校验 3 将Struts2的JAR包中的xwork validato

温馨提示

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

评论

0/150

提交评论