struts2总结2

struts2总结2

ID:40566328

大小:181.50 KB

页数:5页

时间:2019-08-04

struts2总结2_第1页
struts2总结2_第2页
struts2总结2_第3页
struts2总结2_第4页
struts2总结2_第5页
资源描述:

《struts2总结2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十讲struts2的核心-拦截器---InterceptorInterceptor是从webWork中衍生出来的。他和aop(面向方面编程)的开发模式非常类似。Aop和Ioc(控制反转或者依赖注入)是spring最核心的两部分内容,对于拦截器有几个角色:1、目标对象(拦截谁)2、拦截对象(拦截器{本身就是个普通的类,里面封装了若干个方法})3、对目标对象所生成的一个代理对象,系统真正去执行的是我们的代理对象,(代理对象也是若干个方法)代理对象是系统给我们动态产生出来的。代理对象方法和目标方法是很类似的,代理对象综合了拦截器的方法和系统目标对象的方法

2、。就形成了代理对象的方法。即代理对象方法是我们拦截器方法和目标对象方法的一个结合体。在java里面,动态代理必须要求实现接口,拦截器机制的讲述:Jdk的动态代理要求我们必须面向接口编程,在struts.xml中,如果某个action标签中没有引用自定义的拦截器,系统会默认赋予Struts2自带的拦截器,但如果有自定义拦截器引用的话,Struts2不会加载默认拦截器,如果程序员还是要用到Struts2提供的默认拦截器的话就在此action标签中手动做一个引用,如下:一般我们将拦截器标签写在result标签的后面,defaultStack拦截器就是手动引

3、用系统默认拦截器。像上图所示,如果action引用了多个拦截器,执行顺序是依上而下。拦截器标签的定义,使用时只需要我们给某个action引用就可以了。如果我们要在拦截器中加载参数的话,就在interceptor标签中加载param标签其中name自定义,值自定义。但是name属性必须在interceptor类中有定义,两处一一对应。内容如下:其中在拦截器标签中定义的param属性值是初始值,我们还可以在action引用时加载不同的值,这时加载的值会覆盖掉原来的值,比如:为了方便我们自定义一个拦截器,再定义一个拦截器栈,我们用拦截器栈去接收我们定义好的

4、拦截器和系统默认的拦截器,这样我们实际在action中引用拦截器的时候就直接引用红线框中拦截器栈的名字,以这种方式来同时引用自定义拦截器和默认拦截器是更干练的一种方式。其实拦截器和拦截器栈在struts2的引用上没有什么区别,相对意义来讲栈是多个拦截器组合体。如下图配置。下图引用拦截器栈:我们在引用系统默认拦截器的同时,还可以根据自己的需要更改默认拦截器中对内置拦截器的固定引用。把自己配置好的拦截器作为默认引用。那么所有拦截器将会应用更改后的默认拦截器。如下我们自定义的拦截器都要集成自interceptor接口,要实现三个方法Init()、desto

5、ry()、intercept(),我们一般使用拦截器都执行intercept方法即可,因为处理拦截代码都在这个方法中,大多数情况下用不到init和destory方法所以struts给我们提供了一个抽象类、继承了interceptor,空实现了init和destory方法(既实现方法没有代码实现)这样我们要做的只需要实现intercept方法即可。所以我们实际使用时,一般我们自己的类都继承自AbstractInterceptor();这样方便了许多。下面是源代码截图:继承拦截器抽象类例子如下:我们在定义好拦截器之后在可以在执行目标方法前和执行目标方法后

6、进性操作。如下,我们对action引用了下面拦截器之后,那么在action方法处理前会输出intercept,在action方法处理完后会输出finish。如果我们的一个action中引用了多个拦截器,或者在action引用的拦截器中有多个子拦截器或拦截器栈,他们的执行顺序是依据配置顺序进行的。他们在执行目标方法前的一系列操作时,都是依据配置顺序执行的,而在执行目标方法后的一系列操作时,都依据反配置顺序执行,后进先出。比如下图:拦截器和struts1的过滤器涵义上没有什么太大区别,只不过更加方便点。其实拦截器就是aop的一个标准实现。方法过滤拦截器是

7、更加细化的拦截器,细化到我要拦截action哪个方法,而不是对action中的方法进行拦截。Struts.xml文件中方法是否需要拦截的配置参数为下图红线圈着的部分。他们实际上是空集合对象。第一个表示不拦截那些方法,第二个表示拦截那些方法。蓝色部分就是我们的方法过滤拦截器,上图是此拦截器底层实现截图,这个拦截器已经给我们做好了拦截方法的操作,如下图:我们需要关注的方法是方法过滤拦截器中的doIntercept方法即可继承方法过滤拦截器抽象类的实现类代码编写:然后在struts.xml文件中进行配置,首先定义拦截器,如下然后给action引用即可,我们

8、在引用的时候可以加载过滤方法参数,如下:给action添加默认拦截器,同时添加方法过滤拦截器。一般我们的方法

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

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

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