收藏 分享(赏)

零点起飞学Java Web开发之Struts 2框架技术.pptx

上传人:dreamzhangning 文档编号:3370205 上传时间:2018-10-19 格式:PPTX 页数:28 大小:235.43KB
下载 相关 举报
零点起飞学Java Web开发之Struts 2框架技术.pptx_第1页
第1页 / 共28页
零点起飞学Java Web开发之Struts 2框架技术.pptx_第2页
第2页 / 共28页
零点起飞学Java Web开发之Struts 2框架技术.pptx_第3页
第3页 / 共28页
零点起飞学Java Web开发之Struts 2框架技术.pptx_第4页
第4页 / 共28页
零点起飞学Java Web开发之Struts 2框架技术.pptx_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、第20章 Struts 2框架技术,Struts 2作为一种优秀的MVC框架技术,提供了一系列用于方便Web编程的技术,如国际化操作、数据类型转换、表单数据验证等。这些技术是在Struts 2框架的基础上建立起来的,一般情况下用户只需要编写配置文件,就可以高效率地使用这些技术。通过本章的学习,读者可以理解并且能够使用Struts 2的框架技术,去应对Java Web开发中对该部分内容的需求。,20.1 Struts 2的国际化操作,随着Web技术的飞速发展,网站的使用也有国际化的趋势。一个中文网站在被其他国家的用户访问时,就需要用该国家的语言去显示页面内容。Struts 2框架提供了一种国际化

2、操作的接口,用户只需要编写代表不同语言的资源文件并且进行简单的配置,就可以在JSP页面、Action类中引用这些资源。本节 将对如何实现国际化操作以及一些技术细节进行讲解。,20.1.1 Struts 2实现国际化的原理,一般来说,Struts 2视图层的JSP页面不会使用硬代码,例如以“用户名:”或“username:”作为表单的提示,而是用资源文件中的Key值代替硬代码,例如使用userName这个Key(变量名)来代替具体的字符串。该Key值在不同语言的资源文件中对应不同的值,在中文资源文件中对应“用户名:”,在英文资源文件中对应“username:”。在用户注册页面中,国际化实现的过程

3、如下所示。 (1)当某个地区的用户访问该Web应用时,在其请求参数中有一个名字为request_locale的参数,它说明了要显示的语言。例如英文使用地区的请求为“Register.action? request_locale=en_US”,而中文使用地区的请求为“Register.action? request_locale=zh_CN”。 (2)用户发出请求,在Register处理请求之前,有一个名字为I18nInterceptor的拦截器获取request_locale参数的值,把它存入session中。 (3)Register处理请求,最后显示register.jsp页面,这时会判断s

4、ession中request_locale参数的值,根据其值决定显示哪个资源文件的Key值。如果request_locale=en_US,显示“username:”,如果request_locale= zh_CN,显示“用户名:”。,20.1.2 Struts 2实现国际化的一般步骤,以下是一个具体的例子,这个例子按照步骤去实现,通过它可以了解怎样一步步实现国际化。,1在配置文件中定义basename,basename也就是资源文件的第一个单词,Struts 2框架根据basename去查找资源文件。作为一个常量定义,可以在不同的配置文件中去实现。,2编写中英文资源文件,不同的资源文件给相同的

5、变量(Key)赋予不同的值。这样JSP页面就可以根据Key值去显示不同语言的字符串。,3将中文资源文件转换为unicode编码,由于中文资源文件中出现了非西欧字符,必须把中文字符转换为unicode码,这是因为Java的国际化是通过unicode编码实现的。,4编写用户注册页面,下面编写使用Key值的用户注册页面register.jsp,5编写Action类,不仅JSP页面可以使用Key获取对应资源文件中的Value值,Action类中也可以使用特定的方法根据Key值查找对应的Value值。用户编写的Action类一般继承ActionSupport类,该类提供了getText(Key)方法可以

6、获得资源文件中的Value值。,6编写注册成功的success.jsp页面,success.jsp用来显示用户注册成功的欢迎界面,同样它也要实现国际化。,7运行,下面分别看显示中文和英文的效果。直接在浏览器中输入http:/localhost:8080/ch20/register.jsp,显示页面。,20.1.3 使用不同范围的资源文件,Struts 2讲究模块化的开发方式,不同的模块可以定义自己的资源文件,这样就不至于加载一个很庞大的全局资源文件,而造成对系统性能产生影响。使用globalMessages作为basename的资源文件是全局资源文件。除了这种形式的资源文件还有包资源文件、Ac

7、tion资源文件、临时资源文件。下面分别进行介绍。,1包范围资源文件,可以为某个pachage指定其资源文件,这个文件就是从属于包范围的,它可以被该package的所有Action类以及JSP页面所使用。包资源文件名按照package_language_country.properties的方式命名。,2Action资源文件,可以为某个Action类指定其资源文件,这个文件被该Action专用。Action资源文件的命名规则为:ActionName_language_country.properties。,3临时资源文件,临时资源文件指的是JSP页面在被Web容器解析时动态加载的资源文件。在编

8、写JSP文件时,可以使用标签来指定该JSP文件要使用的资源文件。,20.1.4 加载资源文件的顺序,Struts 2是按照特定的顺序来加载不同范围的资源文件的,一般来说,这个顺序就是由小范围到大范围。Action类和JSP页面都有可能用到资源文件,下面对它们的加载顺序进行说明。,1Action用到的资源文件的加载顺序,假如现在有一个业务控制器childAction,它有一个父类fatherAction,并且有一个接口fatherInterface,则按照下面的顺序加载资源文件。 (1)childAction所在的目录下,查找basename为childAction的资源文件。 (2)如果找不到

9、对应的Key值,则在fatherAction所在的目录下,查找basename为fatherAction的资源文件。 (3)如果还找不到对应的Key值,则在fatherInterface所在的目录下,查找basename为fatherInterface的资源文件。 (4)如果还找不到对应的Key值,则在包所在的目录下,查找basename为package的资源文件。 (5)如果还找不到对应的Key值,则查找全局资源文件,即basename为struts.custom.i18n.resources常量值的资源文件。 (6)如果找到最后还找不到对应的Key值,则直接输出该Key值的字符串值。,2J

10、SP用到的资源文件的加载顺序,JSP加载资源文件的顺序没有Action那么复杂,顺序如下: (1)在标签指定的国际化资源文件中加载Key值对应的Value。 (2)如果在临时资源文件中找不到对应的Key值,则直接查找全局资源文件中的Key值。 (3)如果还找不到对应的Key值,则直接输出该Key值的字符串值。,20.2 Struts 2的类型转换,在Web应用中,用户通过视图层输入的数据都是字符串,而后台模型层可能是预定义类型、日期类型、复合类型、复合类型的集合等。Struts 2框架提供了数据格式转换的机制,程序员只需要按照规则去使用即可。本节结合实例介绍如何使用Struts 2的类型转换功

11、能。,20.2.1 预定义类型和日期类型的转换,对于预定义类型和日期类型,Struts 2可以直接将JSP表单中的参数和Action类的同名属性对应起来,实现类型转换。其实,在前面几章中这样的例子已经出现过了,这里为了加深印象,再通过一个例子回顾一下。,20.2.2 复合类型的转换,复合类型是指程序员通过JavaBean定义的类型,例如可以用Book.Java定义一个Book类型。这样就可以在Action类中定义一个Book类型的属性。Struts 2框架的机制允许在JSP表单中通过字符串给这个复合类型赋值。,20.2.3 复合类型集合的转换,复合类型的集合也即JavaBean对象的集合,在A

12、ction类中可以使用JavaBean对象的集合做属性,Struts 2可以实现客户端字符串与这种属性的转换。,20.2.4 Struts 2类型转换异常处理,用户输入的字符串和即将转换的类型不符合,这时会出现异常,例如,在出生日期文本框中输入字符串“hello”。对于异常信息,Struts 2框架使用拦截器进行处理:struts-default.xml文件中定义了一个名字为conversionError的拦截器,这个拦截器对转换的异常信息进行捕获。如果Struts 2在进行类型转换的过程中出现异常,则该拦截器获取异常信息,并将其封装为一个fielderror保存在ActionContext中

13、。例如示例20-5中当在出生日期文本框中填写字符串时,fielderror信息就会显示在页面上。,20.3 Struts 2数据验证,在Web开发中,必须要对用户输入的表单内容进行验证,以检验输入的内容是否符合格式要求和逻辑要求。例如,用户在“价格”文本框中输入非浮点型字符串,不符合格式要求,或者在“出生日期”文本框中输入“2-2-2050”,虽然符合格式要求,但是不符合逻辑要求。Struts 2框架已经创建了一个用于数据验证的机制,程序员只需要重写特定的方法,或者编写对应的配置文件就可以实现数据验证。下面结合实例进行分析。,20.3.1 使用validate()方法进行验证,程序员在编写Ac

14、tion类时,一般继承ActionSupport类,该类提供了一个进行数据验证的方法void validate(),如下所示。01 public void validate() 02 03 public void addFieldError(String fieldName, String errorMessage) 04 validationAware.addFieldError(fieldName, errorMessage); 05 在validate()方法中进行验证时,如果有异常信息,可以通过addFieldError()方法将异常信息添加到ActionContext中。所以程序员在

15、Action类中可以重写validate()方法进行客户端表单的验证。下面通过一个例子来说明其使用方法。,20.3.2 使用配置文件进行验证,除了使用validate()方法进行验证,程序员还可以编写XML文件进行某个Action对应表单的验证。这个文件的命名规则为ActionName-validation.xml,并且要保存在和Action类相同的目录下。例如,Reg类的验证文件为Reg-validation.xml。下面通过例子来说明怎样使用XML文件进行验证。,20.4 数据验证时国际化操作的实例分析,前面几节讲了国际化和数据验证。在对用户表单进行验证时,可以把显示的提示信息进行国际化操作。,20.5 小 结,本章结合实例讲解了Struts 2的3种框架技术,它们在实际的Web开发中经常使用。本章的重点是Struts 2国际化、数据类型转换、数据验证的使用方法。通过本章的学习读者应该能够配置并使用Struts 2的这些框架技术。至于这些技术的细节内容,限于篇幅没有做详尽的介绍,读者可以参考其他的资料。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报