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

下载本文档

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

文档简介

1、第第9Struts 29Struts 2进阶与提高进阶与提高Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦单元描述单元描述Struts 2完全颠覆了Web编程的传统,在Struts 2的Action类中,完全去掉了request、response等Servlet API。该框架提供了一整套用于简化JSP编程的标签,开发者只需要稍作配置就可以实现各种常用效果,该框架可以自动完成数据转换、赋值,这些对Web编程是个革命性的转变;Struts 2同样提供配置式的数据校验功能。本单元将重点介绍该框架在国际化、标签库、数据校验等方面的技术。Java EEJava

2、EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦单元目标单元目标了解Struts 2标签库的配置和使用;了解Struts 2在国际化方面的实现;熟悉Struts 2数据转换和赋值的相关技术;掌握Struts 2数据校验的功能;Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1任务任务1引入性案例引入性案例任务描述:任务描述:使用已经学过的有关Struts 2框架的知识,完成用户注册系统的开发。任务目标:任务目标:本案例的主要任务就是在当前知识体系结构的基础上完成用户注册模块的设计和实现,并分析不足之处。Java EEJava EE框架技术

3、进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.1案例分析案例分析现在根据已学过的Struts 2的相关技术知识,对第7单元的引入性案例进行修改,完成用户登录模块,相关需求分析与第7单元引入性案例相同。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦工程目录结构图工程目录结构图Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦运行效果运行效果Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.2设计步骤设计步骤(1)创建用户注册模块的视图界面:register.jsp、

4、registerSuccess.jsp;(2)创建资源信息文件:Aperties;(3)创建Action:RegisterAction.java;(4)为解决中文乱码问题,创建过滤器Servelt:CharacterEncodingFilter.java;Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.2设计步骤设计步骤(5)创建配置文件web.xml;(6)配置struts.xml;(7)配置perties;(8)发布工程。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦

5、作者:赵彦9.1.3具体实现具体实现1创建用户注册模块的视图界面register.jsp、registerSuccess.jsp2创建资源信息文件:Aperties该文件的内容与第7单元的引入性案例(RegisterStruts工程)的Aperties文件内容相同,只是将其中“”、“”的文本删除。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.3具体实现具体实现3创建Action:RegisterAction.java4为解决中文乱码问题,创建过滤器Servelt:CharacterEncod

6、ingFilter.java该文件和之前提到的代码相同,文件的配置也相同。5创建配置文件web.xml该文件的配置与第8单元的进阶式案例中有关web.xml的配置相同,只是将默认欢迎页面改为“register.jsp”。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.3具体实现具体实现6配置struts.xml7配置perties让Struts 2框架识别资源配置文件的代码为:“struts.custom.i18n.resources=Application”。8发布工程Java EEJava EE框架技术进阶式教程框架技术进阶

7、式教程 作者:赵彦作者:赵彦9.1.4Struts 2工作流程工作流程访问注册页面访问注册页面提交表单提交表单启动启动action处理处理数据数据Struts 2截获截获action请求请求查找查找web.xml找找到到Struts 2分发分发器器Filterstruts.xml配配置置action请求请求对应的对应的Action类,将提交的类,将提交的数据交给数据交给Action实例实例反射调用反射调用RegisterAction中的中的execute()方法方法跳转到相应的跳转到相应的JSP页面显示页面显示结果,并求其结果,并求其Action实例实例Java EEJava EE框架技术进阶

8、式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.5分析不足之处分析不足之处(1)一个优秀的注册程序,)一个优秀的注册程序,不仅仅是输入不仅仅是输入用户名和密码用户名和密码,在较为严格的系统中需要录在较为严格的系统中需要录入极为丰富的数据,为了方入极为丰富的数据,为了方便用户录入,就需要各种控便用户录入,就需要各种控件帮助用户完成录入工作,件帮助用户完成录入工作,如单选按钮、复选框、文件如单选按钮、复选框、文件上传按钮、下拉框、日期选上传按钮、下拉框、日期选择器等等。择器等等。Struts 2丰富丰富的标签库可的标签库可以完成该项以完成该项工作工作Java EEJava EE框架技术进阶式

9、教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.5分析不足之处分析不足之处(2)一个优秀)一个优秀产品是面向产品是面向国际的,因此支持国际化将国际的,因此支持国际化将是不容忽视的目标。是不容忽视的目标。Struts 2完全完全支持国际化支持国际化Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.5分析不足之处分析不足之处(3)由于)由于Struts 2完全放弃完全放弃了了ActionForm,但是由于,但是由于Java本身的缺陷,比如时间本身的缺陷,比如时间的表示方面等等,前台表单的表示方面等等,前台表单传来的数据,转去给后台传来的数据,转去给后

10、台Java处理时,数据类型的转处理时,数据类型的转换往往会加大程序员的工作换往往会加大程序员的工作量,那么量,那么Struts 2有没有更有没有更好的解决方案呢?好的解决方案呢?Struts 2内建的内建的类型转换器可类型转换器可以有效解决这以有效解决这类问题类问题Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.1.5分析不足之处分析不足之处(4)Struts 1的的Validator验验证框架可以有效解决数据校证框架可以有效解决数据校验的问题,那么验的问题,那么Struts 2如如何解决此类问题呢?何解决此类问题呢?Struts 2的的Validat

11、ion框架框架可以有效解决可以有效解决这类问题这类问题Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.2任务任务2Struts 2标签库标签库任务描述:任务描述:与Struts 1一样,Struts 2也提供了大量的标签,Struts 2的标签库用于简化JSP编程,开发者只需要在标签中做少量配置,就可以实现各种常见效果。Struts 2标签与Action联系比较紧密,使用标签后,Struts 2会自动完成JSP层的显示数据、在Action层采集数据等工作。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.2任务任

12、务2Struts 2标签库标签库任务目标:任务目标:Struts 2提供了大量Struts 1中没有的标签,如日期选择器、树形结构、主题、模板等,同时Struts 2还提供了对DWR技术、AJAX技术的支持,使Struts 2可以完成各种AJAX的效果。该任务的主要目标就是认识和了解Struts 2标签。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.2.1Struts 2标签分类标签分类Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.2.2表单标签表单标签Struts 2中所有的表单处理类都继承于org.ap

13、ache.Struts ponents.UIBean类,在该类中定义了一些通用属性,这些属性在所有的表单标签中都存在,感兴趣的读者可以阅读UIBean类的源代码。在UIBean类中定义的通用属性可分为模板相关属性、JavaScript相关属性、tooltip相关属性、通用属性四大来。课本200页表9-1到9-4分别对这四大类通用属性进行了详细描述。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.2.3非表单标签非表单标签非表单标签主要用于生成一些非可视化的元素,或根据服务端的处理结果显示一些信息。如div、actionerror等。表9-6给出了Str

14、uts 2的非表单标签的名称和使用说明。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.2.4控制标签控制标签Struts 2的非UI标签包括控制标签和数据标签。其中控制标签主要完成条件逻辑、循环逻辑的控制,以及对集合的合并、排序等操作。控制标签有9个,其名称和功能描述如表9-7所示。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.2.5数据标签数据标签数据标签主要用于提供各种和数据访问相关的功能,如创建一个类的对象实例、输出国际化信息、包括其它的Web资源等。数据标签的名称和使用说明如表9-8所示。Java

15、EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.3任务任务3Struts 2国际化国际化任务描述:任务描述:Struts 2的国际化功能做得相当出色。在Struts 2中可以读取资源文件中的国际化信息,并可以将这些国际化信息应用到不同的地方,如数据校验、数据类型转换等的出错信息,JSP页面的国际化信息等。任务目标:任务目标:如何使用Struts 2框架解决程序的国际化问题就是该任务的主要目标。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.3.1Struts 2中的全局资源文件中的全局资源文件假设全局资源文件的baseN

16、ame为Application,则在perties文件中可以通过如下代码设置。struts.custom.i18n.resources=Application在struts.xml文件中配置struts.custom.i18n.resources常量可以通过如下代码完成。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.3.2在在Struts 2中访问国际化信息中访问国际化信息(1)使用标签在JSP页面中直接输出国际化信息。(2)使用表单标签输出国际化信息,如、。(3)如果Action类从ActionSupport类继承,可以通过Ac

17、tionSupport类的getText()方法来返回资源文件中的国际化信息。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.3.3对引入性案例实现国际化对引入性案例实现国际化实例实例1:在引入性案例的基础上进行修改,将其实现国际化。(1)7.3.2节创建了Application_en_US.properties文件和Application_zh_CN.properties文件,将这两个文件复制到引入性案例的“src”路径下,并删除这两个文件中的“”和“”标记。(2)保存后重新发布工程。Java EEJava EE框架技术进阶式教程框架技术进阶式教程

18、作者:赵彦作者:赵彦9.3.3对引入性案例实现国际化对引入性案例实现国际化Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4任务任务4数据类型转换器数据类型转换器任务描述:任务描述:用户录入的信息通过网页进行收集,不管是什么类型,都是以字符串的形式提交给服务端。Java是强类型语言,想要接受客户端提交的信息,就必须将这些信息转换成相应的Java数据类型。在传统的Web系统中,这些工作必须由开发人员自己完成,如果使用了MVC框架,那么数据类型转换的工作可以由MVC框架代替。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:

19、赵彦9.4任务任务4数据类型转换器数据类型转换器任务目标:任务目标:Struts 2提供了强大的类型转换机制。Struts 2的类型转换是基于OGNL表达式的。只要HTML表单元素(文本框、选择框等)的name属性按照OGNL的规则命名,提交后,系统那个就会将提交的数据转换成Java相应的数据类型。该任务的目标即使学习Struts 2框架在数据类型转换方面的技术。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.1传统的类型转换传统的类型转换在传统的Web程序中,非字符串类型的信息需要手工将其转换成相应的Java数据类型。例如年龄需要转换成整数类型数

20、据,生日需要转换成日期类型数据。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.1传统的类型转换传统的类型转换实例实例2:如果在注册信息中存在年龄和生日相关信息,请给出相应的数据类型转换的解决方案。(1)假设在服务器端将注册信息封装在UserBean类中;年龄:age 整型 生日: birthday 日期型(2)首先对age、birthday请求参数进行类型转换后,之后才能赋值;Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.1传统的类型转换传统的类型转换(3)在相应的Servlet程序中,通过requ

21、est获取age的请求信息;(4)在相应的Servlet程序中,通过request获取birthday的请求信息。以上解决问题的方案虽以上解决问题的方案虽然可以完成数据类型转换的然可以完成数据类型转换的任务,但是需要手工编写大任务,但是需要手工编写大量代码。那么基于量代码。那么基于MVC架架构的构的Struts 2框架优势如何实框架优势如何实现数据类型转换的呢?现数据类型转换的呢?Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.2Struts 2内建的类型转换器内建的类型转换器在Struts 2框架中提供了强大的类型转换机制,开发人员可以使用Str

22、uts 2的这个机制来进行任意复杂的数据类型转换。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.3其它转换方式其它转换方式虽然在Struts 2中可以自动将简单类型、数组和集合类型,但是在实际应用中还是不够的。在Struts 2中,可以通过编写基于OGNL的类型转换器来完成基于类数据的转换任务。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.3其它转换方式其它转换方式Struts 2默认的转换器并不总能满足需要。例如,输入时间,Struts 2只能转换形如12:00:00的格式,如果输入12:00就会

23、报错。也有一些数据类型Struts转换不了。因此需要自定义数据转换器。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.3其它转换方式其它转换方式实例实例3:自定义一个日期时间转换器,用于接收各种常用的时间格式。(1)所用知识点的简介。(2)创建名为“DateConvertor”的工程。该工程中最重要的类就是实现日期时间数据转换的DateTimeConvertor.java,其代码如下。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.3其它转换方式其它转换方式(3)转换器的配置在xwork-convers

24、perties中,该文件的代码如下。(4)该实例的目标是实现3种日期类型在DateTimeConvertorAction类中进行转换,转换器的调用对Action而言是透明的,转换器Action类为“ConvertorAction.java”,代码如下。(5)struts.xml的配置,代码如下。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.4.3其它转换方式其它转换方式(6)web.xml文件的配置代码如下。(7)用户界面包括convert.jsp和convertSuccess.jsp,文件代码如下。(8)运行结果如图9-10、9-11

25、所示。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5任务任务5数据校验数据校验任务描述:任务描述:在Struts 2中同时提供了客户端和服务器端校验机制。Struts 2中的客户端校验也是采用了JavaScript,但是这些JavaScript代码是由Struts 2自动添加的。而Struts 2的服务端校验位开发人员提供了多种选择,如validate方法、Validation框架等。除此之外,开放性的Struts 2框架还允许开发人员编写自定义的校验器。任务目标:任务目标:本任务目标是了解并学会使用Struts 2框架的数据验证方法。Java E

26、EJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5.1使用使用validate方法进行数据校验方法进行数据校验(1)引入性案例是通过用户自己编写的函数实现了数据校验功能。(2)Struts 2框架提供了两个和校验有关的接口,分别是Validateable和ValidationAware,Validateable接口存在唯一一个validate()方法。Struts 2框架在调用Action的execute()之前,会自动调用validate()方法。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5.1使用使用valida

27、te方法进行数据校验方法进行数据校验(3)但是validate()方法没有返回值,这就意味着无法通过validate()方法的返回值来验证输入数据是否通过Struts 2的校验。此时需要使用另外一个校验感知接口ValidationAware。该接口中存放了一系列的addXXX()方法,这些方法可以将校验过程中发生的错误信息添加到系统中,实际上是添加到一个Map对象中。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5.1使用使用validate方法进行数据校验方法进行数据校验(4)为此Struts 2在提供了ActionSupport类,实现了这两个接

28、口。用于完成数据校验。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5.1使用使用validate方法进行数据校验方法进行数据校验实例实例4:在本单元实例1的基础上对RegisterStruts2工程进行修改,使其通过validate方法完成数据校验。对RegisterAction类进行修改,修改后的代码如下,运行结果和实例1相同。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5.2使用使用Validation框架进行数据校验框架进行数据校验validate()方法可以完成数据校验,但仍需要编写大量代码,而

29、且代码复用率不高。Struts 2提供了Validation校验框架,通过该框架,只需要在配置文件中配置要校验的字段和校验规则,就可以对相应的字段进行校验。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5.2使用使用Validation框架进行数据校验框架进行数据校验实例实例5:在本单元实例4的基础上继续对RegisterStruts2工程进行修改,使其通过Validation框架完成数据校验。(1)对Action类进行修改,删除其中的数据校验方法。(2)在RegisterAction类所在路径下创建名为RegisterAction-validation.xml的配置文件。Java EEJava EE框架技术进阶式教程框架技术进阶式教程 作者:赵彦作者:赵彦9.5.2使用使用Validati

温馨提示

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

评论

0/150

提交评论