Struts2的高级组.ppt

上传人:小飞机 文档编号:6521443 上传时间:2023-11-08 格式:PPT 页数:57 大小:248KB
返回 下载 相关 举报
Struts2的高级组.ppt_第1页
第1页 / 共57页
Struts2的高级组.ppt_第2页
第2页 / 共57页
Struts2的高级组.ppt_第3页
第3页 / 共57页
Struts2的高级组.ppt_第4页
第4页 / 共57页
Struts2的高级组.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《Struts2的高级组.ppt》由会员分享,可在线阅读,更多相关《Struts2的高级组.ppt(57页珍藏版)》请在三一办公上搜索。

1、1,第3章 Struts2的高级组件,3.1 Struts2的国际化3.2 Struts2的拦截器3.3 Struts2的输入校验3.4 Struts2的文件上传和下载,2,3.1 Struts2的国际化,3.1.1 Struts2实现国际化的流程3.1.2 Struts2国际化应用实例,3,3.1.1 Struts2实现国际化的流程,“国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区、语言的不同而显示不同的用户界面。例如,请求来自于一台中文操作系统的客户端计算机,则应用程序响应界面中的各种标签、错误提示和帮助信息均使用中文文字;如果客户端计算机采用英文操作系统,则应用程序

2、也应能识别并自动以英文界面做出响应。,4,5,具体流程是:(1)不同地区使用操作系统环境不同,如中文操作系统、英文操作系统、韩文操作系统等,在获得客户端地区的语言环境后,struts.xml文件会找国际化资源文件,当操作系统环境是中文语言环境,就加载中文国际化资源文件。所示国际化需要编写支持多个语言的国际化资源文件,并且配置struts.xml文件。(2)根据选择的语言加载相应的国际化资源文件,视图通过Struts2标签读取国际化资源文件把数据输出到页面上,完成页面的显示。,6,3.1.1 Struts2实现国际化的流程,引入国际化机制的目的在于提供自适应的、更友好的用户界面,而并未改变程序的

3、其他功能/业务逻辑。人们常用I18N 这个词作为“国际化”的简称,其来源是英文单词Internationalization 的首末字母I 和N 及它们之间的字符数18。,7,3.1.1 Struts2实现国际化的流程,实现国际化的步骤:1、编写国际化资源文件2、配置sturts.xml文件3、输出显示国际化信息,8,1.国际化资源文件或者资源文件国际化资源文件又称资源文件是以.properties为扩展名的文本文件,可以新建一个记事本把扩展名改为properties即可,该文本文件是以“健-值”对的形式存储国际资源文件。例如:key=valueloginName=用户名称loginPasswo

4、rd=用户密码当需要多个资源文件为不同语言版本提供国际化服务时,可以为资源文件命名,命名的格式有以下两种:资源文件名.properties资源文件名_语言种类_国家类型.properties文件后缀必须是.properties,语言种类必须是必须是有效的ISO(国际标准化组织)语言代码,具体如表3.1所示。,9,10,2.在struts.xml文件中配置编写完国际化资源文件后,需要在struts.xml文件中配置国际化资源文件的名称,从而使Struts2的i18n拦截器在加载国际化资源文件的时候能找到这些国际化资源文件,在struts.xml中的配置很简单,代码如【例3-4】所示。,11,【例

5、3-4】在struts.xml中配置资源文件,12,3.输出国际化信息国际化资源文件中的value(值)是要根据语言环境把其中值通过Struts2标签输出到页面上的,可以在页面上输出国际化信息也可以在表单的label标签上输出国际化信息。,14,第3章 Struts2的高级组件,3.1 Struts2的国际化3.2 Struts2的拦截器3.3 Struts2的输入校验3.4 Struts2的文件上传和下载,15,3.2 Struts2的拦截器,3.2.1 Struts2拦截器的基础知识3.2.2 Struts2拦截器实现类3.2.3 Struts2拦截器应用实例,16,3.2.1 Strut

6、s2拦截器的基础知识,拦截器(Interceptor)体系是Struts2的一个重要组成部分,正是大量的内置拦截器才提供了Struts2的大部分操作。,17,3.2.1 Struts2拦截器的基础知识,当FilterDispatcher拦截到用户请求后,大量的拦截器将会对用户请求进行处理,然后才调用用户自定义的Action类中的方法来处理请求,比如params拦截器将HTTP请求中的参数解析出来,将这些解析出来参数设置为Action的属性;servlet-config拦截器直接将HTTP请求中的HttpServletRequest实例和HttpServletResponse实例传给Action

7、;国际化拦截器i18n将国际化资源进行操作;文件上传拦截器fileUpload将文件信息传给Action。另外还有数据校验拦截器对数据校验信息进行拦截。,18,对于Struts2的拦截器体系而言,当需要使用某个拦截器时,只需在配置文件struts.xml中配置就可以使用;如果不需要使用该拦截器,只需在struts.xml配置文件中取消配置即可。Struts2的拦截器可以理解为一种可插拔式的设计思想,所以Struts2框架具有非常好的可扩展性。,19,拦截器是AOP(Aspect-Oriented Programming,面向切面编程)的设计思想,拦截是AOP的一种实现策略。AOP是目前软件开发

8、中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。,20,3.2 Struts2的拦截器,3.2.1 Struts2拦截器的基础知识3.2.2 Struts2拦截器实现类3.2.3 Struts2拦截器应用实例,21,3.2.2 Struts2拦截器实现类,在项目开发中,Struts2内置的拦截器可以完成项目的大部分功能,但有些与系统逻辑相关的通用功能则需要通过自定义拦截器来实现,如权限控制和用户输入内容的控制等等。编写自定义拦截器有两种方法:一是需要实现Struts

9、2提供的Interceptor接口。通过实现该接口可以开发一个拦截器类。该接口的代码如下:,22,【例3-8】Struts2的拦截器接口(Interceptor.java)import com.opensymphony.xwork2.ActionInvocation;import;public interface Interceptor extends Serializable void destroy();void init();String intercept(ActionInvocation invocation)throws Exception;,1.ActionInvocation是

10、什么ActionInvocation就是Action的调用者。ActionInvocation在Action的执行过程中,负责Interceptor、Action和Result等元素的调度。2.ActionInvocation干什么Interceptor通过ActionInvocation可以完全的改变Action行为:不让它执行、改变返回值、甚至可以细颗粒的操作Action的方法简单理解就是,actionInvocation是所要拦截action的一个代理,24,在Java语言中,有时候一个接口通过一个抽象类来实现,在抽象类中提供该接口的空实现。这样在编写类的时候,可以直接继承抽象类,不用实

11、现那些不需要的方法。Struts2框架也提供了一个抽象拦截器类(AbstractInterceptor),该类对init()和destroy()方法进行空实现,因为很多时候实现拦截器时都不需要申请资源。在开发自定义拦截器的第二种方法就是:继承AbstractInterceptor这个类。,25,【例3-9】Struts2的抽象拦截器(AbstractInterceptor.java)import com.opensymphony.xwork2.ActionInvocation;public abstract class AbstractInterceptor implements Interc

12、eptor public void init()public void destroy()public abstract String intercept(ActionInvocation invocation)throws Exception;,26,3.2 Struts2的拦截器,3.2.1 Struts2拦截器的基础知识3.2.2 Struts2拦截器实现类3.2.3 Struts2拦截器应用实例,通过一个简单实例说明拦截器的定义和工作原理1、编写普通的action实现类及相应的jsp视图文件,并在struts.xml文件中进行配置2、编写拦截器Java类,可以有两种方式:实现Inter

13、ceptor接口或继承AbstractInterceptor类。其实最终目的都是要重写intercept()方法。拦截器类可以与action实现类放在相同的包里,也可放在不同的包里3、在struts.xml文件中配置拦截器,Struts.xml中拦截器的最基本配置,/success.jsp/error.jsp,拦截器栈的配置,/success.jsp/error.jsp,配置整个包里所有action使用的拦截器,/success1.jsp/error.jsp,31,3.2.3 Struts2拦截器应用实例,1.项目介绍该项目开发一个网上论坛过滤系统,如果网友发表的有不文明的语言,将通过拦截器对

14、不文明的文字进行自动替代。该项目编写一个自定义拦截器(MyInterceptor.java),代码如【例3-10】所示;项目有一个发表新闻评论的页面(news.jsp),代码如【例3-11】所示,其对应的业务控制器PublicAction类,代码如【例3-13】所示;如果评论成功页面是success.jsp页面,代码如【例3-12】所示。其中还需要配置web.xml,如【例1-3】所示;配置struts.xml,如【例3-14】所示。项目的文件结构如图3-14所示。,方法拦截器的使用,MethodFilterInterceptor类可以实现对action类中某些方法的拦截,因此可以自定义一个j

15、ava类继承自MethodFilterInterceptor类然后在struts.xml文件中配置需要拦截的方法,33,第3章 Struts2的高级组件,3.1 Struts2的国际化3.2 Struts2的拦截器3.3 Struts2的输入校验3.4 Struts2的文件上传和下载,34,3.3 Struts2的输入校验,3.3.1 Struts2输入验证的基础知识3.3.2 Struts2的手工验证3.3.3 Struts2内置校验器的使用3.3.4 Struts2内置校验器应用实例,35,3.3.1 Struts2输入验证的基础知识,在网络上,由于用户对要输入数据的格式理解的多样性,导致

16、用户输入的数据与开发者的意图不一致性,为了保证数据在存储过程中的正确性和一致性,所以须对用户输入的信息进行校验。只有进行严格校验的数据才能提高系统的安全性、健壮性,保证系统的正常运行。如果对数据不加校验,有可能导致系统阻塞或者系统崩溃。,输入校验的分类,一、客户端校验客户端校验,可以使用javascript脚本语言二、服务器端校验在struts2框架中,服务器端校验又分为两类1、自定义校验方法,即重写validate方法2、使用struts2内置的校验器,一、客户端校验,客户端校验可以在客户端通过JavaScript脚本或者VBScript脚本对用户信息进行验证,验证通过后再发送到服务器端进行

17、进一步的验证Struts10validate项目下 clientvalidate.html,二、服务器端校验,1、自定义校验方法,即重写ActionSupport类的validate()方法实例:register1.jsp RegistAction1.java,二、服务器端校验,2、使用struts2内置的校验器实例1:register3.jsp实例2:register2.jsp RegistAction2.java RegistAction2-validation.xml验证文件与实现类java文件放在同一目录下,40,1.校验器的配置风格Struts2框架提供两种配置校验器的方式:字段校验

18、器配置风格和非字段校验器配置风格。这两个配置风格没有本质的区别,只是在组织方式和关注点不同。,41,(1)字段校验器配置风格如果使用字段校验器配置风格,校验文件以元素为基本元素,由于这个基本元素的name属性值为被校验的字段,所以是字段优先,因此叫做字段校验器配置风格。该风格的格式如【例3-22】所示。【例3-22】字段校验器配置风格 参数值 校验失败提示的信息.,42,(2)非字段校验器配置风格非字段校验器配置风格是以校验器优先的配置方式。以为基本元素,在根元素下可以配置多个。该风格的配置方式代码如【例3-23】所示。【例3-23】非字段校验器配置风格 需要被校验的字段属性 参数值 校验失败

19、提示的信息.,43,第3章 Struts2的高级组件,3.1 Struts2的国际化3.2 Struts2的拦截器3.3 Struts2的输入校验3.4 Struts2的文件上传和下载,44,3.4 Struts2的文件上传和下载,3.4.1 文件上传3.4.2 文件下载,45,3.4.1 文件上传,文件上传是很多Web项目中具有的功能。在Struts2框架中,提供了操作文件上传的组件。Struts2框架的类库中文件的上传和下载所需的JAR文件是:和,把这两个JAR加载到类库中即可。用Struts2上传文件的功能时,只需要使用普通的Action即可,但是为了获取一些上传文件的信息,如上传文件名

20、、文件类型,需要按照一定的规则来在Action中增加一些getter和setter方法。在上传文件时,可以对上传的文件进行大小、格式进行控制。在Struts2中提供了文件上传拦截器(fileUpload),该拦截器能够实现对上传文件的过滤功能。,46,fileUpload拦截器常用属性有:maximumSize:设置上传文件的最大长度(以字节为单位),默认值为2MB。allowedTypes:设置上传的文件类型,以逗号为分隔符可以上传多种数据类型,如text/html,如果不设置该属性就是允许任何类型文件上传。如果使用了拦截器对上传文件进行过滤,一旦上传的文件不符合要求时,将在页面中提示异常信

21、息,提示的异常信息是Struts2框架中以“健=值”格式的信息,常用的“键”有:设置上传的文件类型不匹配的提示信息。:设置上传的文件太大的提示信息。:设置文件不能上传的通用信息提示。,文件上传项目实施步骤,1、将和加载到lib目录2、编写上传文件的表单fileUp.jsp、上传成功后视图转发页面fileUpSuccess.jsp3、编写action实现类UploadAction.java4、编写国际化资源文件。这一步不是必须的,只是为了给用户一个中文友好提示5、配置struts.xml文件,其中的拦截器是可以不配置的,如果不配置就使用默认参数值。,文件上传的另外一种简化方式,只需修改上一个例子

22、中的action实现类,而且这种方式也不需要在struts.xml文件中配置拦截器fileUp1.jsp、fileUpSuccess1.jsp编写action实现类UploadAction1.java注意:FileUtils类在包里上面这个常量设置上传文件大小限制(10M),49,3.4 Struts2的文件上传和下载,3.4.1 文件上传3.4.2 文件下载,50,3.4.2 文件下载,Struts2中实现文件的下载需要在struts.xml配置文件中先配置用于下载的拦截器download,然后配置中stream的参数值。stream的常用参数有:contentType:用于指定下载文件的类

23、型,该文件类型与互联网MIME标准规定要一直,如text/xml表示XML类型的文件,text/gif表示GIF图片,text/plain表示纯文本类型。inputName:用于指定下载文件的输入流入口,在Action中需要指定该输入流入口。如果在Action中声明的是getInputStream()方法,在配置文件struts.xml中配置为inputStream;如果在Action中声明的是getTargetFile()方法,在配置文件struts.xml配置为targetFile。contentDisposition:用于指定文件下载的处理方式,有内联(inline)和附件(attach

24、ment)两种方式。内联方式表示浏览器会尝试直接显示文件,附件方式会弹出文件保存对话框,默认值为内联。bufferSize:用于设置下载文件时的缓存大小。,下载项目实现步骤,1、编写文件下载视图页面fileDown.jsp2、编写action实现类FileDownload.java,52,总结与回顾!,53,3.1 Struts2的国际化,3.1.1 Struts2实现国际化的流程3.1.2 Struts2国际化应用实例,54,3.2 Struts2的拦截器,3.2.1 Struts2拦截器的基础知识3.2.2 Struts2拦截器实现类3.2.3 Struts2拦截器应用实例,55,3.3 Struts2的输入校验,3.3.1 Struts2输入验证的基础知识3.3.2 Struts2的手工验证3.3.3 Struts2内置校验器的使用3.3.4 Struts2内置校验器应用实例,56,3.4 Struts2的文件上传和下载,3.4.1 文件上传3.4.2 文件下载,57,请复习第1章Struts2框架技术入门!和第2章Struts2核心组件详解、第3章Struts2的高级组件!完成第4章项目!预习第5章Hibernate框架技术入门!,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号