过滤器和拦截器_第1页
过滤器和拦截器_第2页
过滤器和拦截器_第3页
过滤器和拦截器_第4页
过滤器和拦截器_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、与传统MVC开发相比,Struts2框架在控制器部分改变最大,Struts2的控制器由三部分组成: 过滤器(框架提供) 拦截器(框架提供) 业务控制器Action(程序员编写)前面课程重点介绍Struts2的控制器之Action,本篇介绍过滤器和拦截器过滤器拦截器Struts2体系结构和调用流程Servlet过滤器是一种Web组件对象,可以拦截请求和响应开发过滤器需要实现javax.servlet.Filter接口Filter接口定义了三个方法 init() destory() doFilter()方法 URL请求可以被过滤器拦截,在doFilter方法中可以根据需要做预处理,之后再把请求转向

2、到URL指向的目标资源过滤器示例1:开发一个编码过滤器,在转向目标资源之前,将程序中的编码设置为UTF-8EncodingFilter过滤器开发完成后,需要在web.xml中配置 EncodingFilter filter.MyFilter EncodingFilter /* 所有的请求URL都先到filter.MyFilter过滤器示例1测试运行: http:/localhost:8080/EncodingFilter/1.jspStruts2提供了一个前端控制器(过滤器),对所有请求进行统一处理查看Struts2(版本)的过滤器拦截器概述利用Java代理实现拦截功能在Stru

3、ts2中开发自定义拦截器Struts2自带拦截器Struts2的拦截器可以在Action方法的执行前后拦截调用,进行自己的一些处理,比如获取请求参数,进行类型转换等等拦截器是Struts2最强大的特性之一,也是Struts2的核心Struts2拦截器的实现机制:代理模式代理模式 Struts2框架生成目标Action的一个代理 Struts2调用代理对象,代理对象执行必要处理后,再调用目标Action简单Java代理编程示例: 定义一个接口 开发一个实现接口的目标类 开发针对目标类的一个代理类,实现接口 代理类持有目标类对象引用 程序调用代理类方法,代理类进行处理后再调用目标类方法Simple

4、ProxyJava动态代理 利用java.lang.reflect.Proxy和java.lang.reflect.InvocationHandler接口生成动态代理对象 示例DynamicProxy在Struts2中编写针对Action的拦截器类,需要实现Interceptor接口 实现Interceptor接口定义的intercept方法String intercept(ActionInvocation invocation)通过ActionInvocation对象invoke方法可以调用到目标ActionStruts2中开发简单拦截器示例 示例:拦截器开发完毕,要在struts.xml中

5、配置该拦截器要拦截哪个Action访问:http:/localhost:8080/Struts2_HelloWorldInterceptor/hello?message=helloworldStruts2_HelloWorldInterceptor一个Action可能需要多个拦截器,可以将多个拦截器组合在一起,组成一个拦截器栈,Action中引用拦截器栈拦截器栈示例:Struts2_HelloWorldInterceptor2在Struts2中编写针对Action的拦截器类,需要实现Interceptor接口 实现Interceptor接口定义的intercept方法String interc

6、ept(ActionInvocation invocation)ActionInvocation的invoke方法会调用下一个拦截器,如果没有下一个拦截器,则调用目标Action多个Action都需要相同的拦截器或拦截器栈,可以通过default-interceptor-ref定义一个默认拦截器或默认拦截器栈Action中可以不配置拦截器,采用默认拦截器(栈)Struts2自身提供了很多拦截器,并定义了默认拦截器栈,该拦截器栈包含的一系列拦截器在调用Action前后提供了各种基础功能服务Struts2自身提供了一系列拦截器Struts2提供的拦截器在struts-default.xml文件的s

7、truts-default包中进行了定义,同时定义了一个默认拦截器栈struts-default.xml文件位于struts2-core- JAR包根目录下,由框架自动加载struts-default.xml文件中的struts-default包定义了一系列拦截器和一个默认的拦截器栈struts-default.xml文件被自动包含在struts.xml中继承struts-default.xml文件中定义的struts-default包,自动继承该包中定义的默认拦截器栈等配置 /HelloWorld.jsp Action的调用会被struts-defalut.xml文件中struts-default包所定义的默认拦截器所拦截查看Struts2自定义拦截器(部分) servletConfig拦截器 params拦截器参考教材4.3节:Struts2框架的调用流程(P73)Debug模式观察Struts2调用流程业务控制器Acti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论