




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十讲 struts2 的核心-拦截器-InterceptorInterceptor是从webWork中衍生出来的。他和aop(面向方面编程)的开发模式非常类似。Aop和Ioc(控制反转或者依赖注入)是spring最核心的两部分内容,对于拦截器有几个角色:1、 目标对象(拦截谁)2、 拦截对象(拦截器本身就是个普通的类,里面封装了若干个方法)3、 对目标对象所生成的一个代理对象,系统真正去执行的是我们的代理对象,(代理对象也是若干个方法)代理对象是系统给我们动态产生出来的。代理对象方法和目标方法是很类似的,代理对象综合了拦截器的方法和系统目标对象的方法。就形成了代理对象的方法。即代理对象方法是我们拦截器方法和目标对象方法的一个结合体。在java里面,动态代理必须要求实现接口,拦截器机制的讲述:Jdk的动态代理要求我们必须面向接口编程, 在struts.xml中,如果某个action标签中没有引用自定义的拦截器,系统会默认赋予Struts2自带的拦截器,但如果有自定义拦截器引用的话,Struts2不会加载默认拦截器,如果程序员还是要用到Struts2提供的默认拦截器的话就在此action标签中手动做一个引用,如下:一般我们将拦截器标签写在result标签的后面,defaultStack拦截器就是手动引用系统默认拦截器。像上图所示,如果action引用了多个拦截器,执行顺序是依上而下。拦截器标签的定义,使用时只需要我们给某个action引用就可以了。如果我们要在拦截器中加载参数的话,就在interceptor标签中加载param标签其中name自定义,值自定义。但是name属性必须在interceptor类中有定义,两处一一对应。内容如下:其中在拦截器标签中定义的param属性值是初始值,我们还可以在action引用时加载不同的值,这时加载的值会覆盖掉原来的值,比如:为了方便我们自定义一个拦截器,再定义一个拦截器栈,我们用拦截器栈去接收我们定义好的拦截器和系统默认的拦截器,这样我们实际在action中引用拦截器的时候就直接引用红线框中拦截器栈的名字,以这种方式来同时引用自定义拦截器和默认拦截器是更干练的一种方式。其实拦截器和拦截器栈在struts2的引用上没有什么区别,相对意义来讲栈是多个拦截器组合体。如下图配置。下图引用拦截器栈:我们在引用系统默认拦截器的同时,还可以根据自己的需要更改默认拦截器中对内置拦截器的固定引用。把自己配置好的拦截器作为默认引用。那么所有拦截器将会应用更改后的默认拦截器。如下我们自定义的拦截器都要集成自interceptor接口,要实现三个方法Init()、destory()、intercept(),我们一般使用拦截器都执行intercept方法即可,因为处理拦截代码都在这个方法中,大多数情况下用不到init和destory方法所以struts给我们提供了一个抽象类、继承了interceptor,空实现了init和destory方法(既实现方法没有代码实现)这样我们要做的只需要实现intercept方法即可。所以我们实际使用时,一般我们自己的类都继承自AbstractInterceptor();这样方便了许多。下面是源代码截图:继承拦截器抽象类例子如下:我们在定义好拦截器之后在可以在执行目标方法前和执行目标方法后进性操作。如下,我们对action引用了下面拦截器之后,那么在action方法处理前会输出intercept,在action方法处理完后会输出finish。如果我们的一个action中引用了多个拦截器,或者在action引用的拦截器中有多个子拦截器或拦截器栈,他们的执行顺序是依据配置顺序进行的。他们在执行目标方法前的一系列操作时,都是依据配置顺序执行的,而在执行目标方法后的一系列操作时,都依据反配置顺序执行,后进先出。比如下图:拦截器和struts1的过滤器涵义上没有什么太大区别,只不过更加方便点。其实拦截器就是aop的一个标准实现。方法过滤拦截器是更加细化的拦截器,细化到我要拦截action哪个方法,而不是对action中的方法进行拦截。Struts.xml文件中方法是否需要拦截的配置参数为下图红线圈着的部分。他们实际上是空集合对象。第一个表示不拦截那些方法,第二个表示拦截那些方法。蓝色部分就是我们的方法过滤拦截器,上图是此拦截器底层实现截图,这个拦截器已经给我们做好了拦截方法的操作,如下图:我们需要关注的方法是方法过滤拦截器中的doIntercept方法即可继承方法过滤拦截器抽象类的实现类代码编写:然后在struts.xml文件中进行配置,首先定义拦截器,如下然后给action引用即可,我们在引用的时候可以加载过滤方法参数,如下:给action添加默认拦截器,同时添加方法过滤拦截器。一般我们的方法过滤拦截器是针对与action中的某个方法的,所以需要给action独立引用,并同时手动引用系统默认拦截器;其中param标签的name属性includeMethods表示需要拦截那些方法,多个方法之间用逗号隔开,name属性为excludeMethods表示不去拦截那些方法,多个方法之间也同样用逗号隔开。includeMethods和excludeMethods中i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版人工智能在金融领域应用三方合作合同范本
- 2025年度养老地产用地地基买卖合同范本
- 2025年度教育培训机构第三方代付款协议
- 2025年新型家居用品试用推广协议
- 2025年度天使投资合同:智慧城市建设项目合作模板
- 2025年新型建筑保温材料供应合同范本
- 2025版商场租赁合同范本:全业态融合版
- 2025版商铺租赁合同范本:包含产权变更及转租协议
- 2025年度节能型二手电机购销合同范本
- 2025年度石厂开采承包合同矿产资源审批流程范本
- 2025外研社小学英语四年级上册单词表(带音标)
- 2025至2030中国体育赛事行业市场发展分析及发展前景与投资报告
- 小学戏剧教学课本剧剧本集锦
- 【一年级上册语文统编版(2024)-第四单元汉语拼音】14. ang eng ing ong第二课时课件
- 2025年交管12123驾驶证学法减分及驾驶安全理论知识试题库(附含答案)
- 知识产权保护与服务平台创新创业项目商业计划书
- 2025年胎膜早破护理胎膜早破护理查房模板
- 工贸行业安全管理和企业现场常见隐患排查解读(1)精
- 2025年注册核安全工程师执业资格考试(核安全专业实务·核技术)历年参考题库含答案详解(5套)
- 镇痛镇静指南解读
- 养老规划师理论知识考核试题及答案
评论
0/150
提交评论