struts2的拦截器73565

struts2的拦截器73565

ID:15311770

大小:624.00 KB

页数:17页

时间:2018-08-02

struts2的拦截器73565_第1页
struts2的拦截器73565_第2页
struts2的拦截器73565_第3页
struts2的拦截器73565_第4页
struts2的拦截器73565_第5页
资源描述:

《struts2的拦截器73565》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Struts2的拦截器拦截器(Interceptor)是Struts2的一种类,它可以动态拦截Action的可执行方法的类。它提供了一种机制使开发者可以在一个Action执行之前或执行之后插入需要的代码,比如可以在Action执行前阻止其执行,也可以在Action执行后做一些相应的工作。拦截器是Struts2框架的基石,框架许多功能的完成都是构建在拦截器的基础之上的,比如数据校验、类型转换、文件上传与下载的文件类型限制、国际化等。并且Struts2还提供了大量的内置拦截器,这些拦截器完成了框架的大部分任务。这里

2、重点介绍拦截器的配置与使用,以及自定义拦截器的实现。一、理解拦截器拦截是AOP(面向切面编程)的一种实现策略,在AOP中,某个方法或字段被访问,可以被拦截,然后在其之前或者之后加入某些操作。Struts2的拦截器体系正是应用了AOP的设计暂学,它可以动态拦截Action的某些可执行方法,并提供了一种机制,使开发者可以定义在一个Action的可执行方法被行前、后的执行代码。在Struts2中还有一个概念叫拦截器链(常被称为拦截器栈),拦截器栈就是将多个拦截器按一定的顺序联结成一条链,在使用拦截器链时,拦截器链中的

3、拦截器就会按定义的顺序一一被调用。二、拦截器的工作原理当请求到达Struts的FilterDispatcher时,Struts会查找配置文件struts.xml,并根据其配置的拦截器对象,将这些对象串成一个列表(1ist),最后逐个调用列表中的拦截器,如图所示。每一个Action请求都包装在一系列的拦截器内部。拦截器可以在Action执行之前做准备操作,也可以在Action执行之后做回收操作。17三、拦截器的意义要理解拦截器的意义,就不得不先讲DRY规则。在软件开发领域,有一条规则:Don'tRepeatYou

4、rself,这就是DRY规则,它的意思是“不要书写重复的代码”。在软件开发阶段,往往由于前期的设计不合理,或者缺乏预见性,可能会导致多个地方需要使用相同的代码。通过拦截器策略就可以很好地解决这个问题,因为它可以在配置文件中指定需要的拦截器,让拦截器的方法在目标方法执行之前,或之后自动执行,这样就完成了通用操作的动态插入。如果Action需要哪种功能,只需要在配置文件struts.xml中指定引用该拦截器就可以了。Struts2中定义了许多内置拦截器,它们的功能是大多数Action都需要的,所以在Struts2中

5、就将其配置成为了默认拦截器。Struts2中内置的拦截器可以帮助完成70%的拦截任务,必要时开发者可以定义自己的拦截器,并在配置文件struts.xml中指定引用自定义的拦截器。17四、使用拦截器l首先编写拦截器类(或者,利用Struts内置的拦截器)l在struts.xml中配置拦截器五、编写自定义的拦截器Struts2中定义了一个拦截器接口“Interceptor”,该接口定义如下:publicinterfaceInterceptorextendsSerializable{voidinit();//可选,在

6、拦截器方法intercept()执行之前执行,用于初始化资源Stringintercept(ActionInvocationinvocation)throwsException;//必选,是拦截器的核心方法voiddestroy();//可选,在拦截器方法intercept()执行之后执行,用于销毁资源}Struts2用一个抽象类实现了这个接口,抽象类是:“AbstractInterceptor”开发者自定义的拦截器继承这个抽象类即可。init()方法和destroy()方法,大多数情况下是不需要的。例【int

7、erceptor_leave】部分代码对于留言板应用程序,主页面上有两个链接,一个是链接到登陆页面,另一个是链接到查看留言,在查看留言页面可以点击“我要留言”打开留言页面;但是,用户必须已经登录,才可提交留言;如果没有登录,提交留言就被拒绝,并且自动转向登录页面。实现原理是:对提交留言的Action配置拦截器,在执行Action之前先检查用户是否登录。利用session来做,用户登录后,由登录Action负责把用户名放入session中。拦截器从session中取用户名,如果取出是空值,则拦截;否则,放行。以下

8、是有关拦截“提交”的拦截器代码:1、编写一个拦截器类packagecom.interceptor;importjava.util.Map;importcom.opensymphony.xwork2.Action;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionInvocati

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。