拦截器与servlet和Filter的区别

上传人:平*** 文档编号:16640119 上传时间:2017-11-08 格式:DOC 页数:8 大小:389.74KB
返回 下载 相关 举报
拦截器与servlet和Filter的区别_第1页
第1页 / 共8页
拦截器与servlet和Filter的区别_第2页
第2页 / 共8页
拦截器与servlet和Filter的区别_第3页
第3页 / 共8页
拦截器与servlet和Filter的区别_第4页
第4页 / 共8页
拦截器与servlet和Filter的区别_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《拦截器与servlet和Filter的区别》由会员分享,可在线阅读,更多相关《拦截器与servlet和Filter的区别(8页珍藏版)》请在金锄头文库上搜索。

1、servlet/filter/listener/interceptor 区别与联系 2013-01-29 11:29:35 我来说两句 作者:sundenskyqq 收藏 我要投稿 由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起 struts2 和 struts1 的区别的时候,发现为什么struts1 要用 servlet,而 struts2 要用 filter 呢?一时又发现,servlet 和filter 有什么区别呢?于是看了看 web.xml,一时又发现,咦,servlet、filter、listener?还有个 intercepto

2、r?对于这几个概念,本应是初学者就掌握的东东了,可惜本人基础学的不好,只能是现在补课。于是就有了这篇博客。 慢慢来吧,需要补课的地方还有很多很多呀。初学的时候都不知道他们存在呢。呵呵。下面从几个方面阐述一下题目中四个概念的区别与联系:1、概念2、生命周期3、职责4、执行过程一、概念:1、servlet:servlet 是一种运行服务器端的 java 应用程序,具有独立于平台和协议的特性,并且可以动态的生成 web 页面,它工作在客户端请求与服务器响应的中间层。 2、filter:filter 是一个可以复用的代码片段,可以用来转换 HTTP 请求、响应和头信息。Filter 不像 Servle

3、t,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。3、listener:监听器,从字面上可以看出 listener 主要用来监听只用。通过 listener 可以监听 web 服务器中某一个执行动作,并根据其要求作出相应的响应。通俗的语言说就是在 application,session,request 三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件。4、interceptor:是在面向切面编程的,就是在你的 service 或者一个方法,前调用一个方法,或者在方法后调用一个方法,比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或

4、者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。5、servlet、filter、listener 是配置到 web.xml 中,interceptor 不配置到 web.xml 中,struts 的拦截器配置到 struts.xml 中。spring 的拦截器配置到spring.xml 中。 二、生命周期:1、servlet:servlet 的生命周期始于它被装入 web 服务器的内存时,并在 web 服务器终止或重新装入 servlet 时结束。servlet 一旦被装入 web 服务器,一般不会从 web 服务器内存中删除,直至 web

5、 服务器关闭或重新结束。(1)、装入:启动服务器时加载 Servlet 的实例; (2)、初始化:web 服务器启动时或 web 服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有 init()方法负责执行完成; (3)、调用:从第一次到以后的多次访问,都是只调用 doGet()或 doPost()方法; (4)、销毁:停止服务器时调用 destroy()方法,销毁实例。 2、filter:(一定要实现 javax.servlet 包的 Filter 接口的三个方法 init()、doFilter()、destroy(),空实现也行) (1)、启动服务器时加载过滤器的实例,并调用 i

6、nit()方法来初始化实例; (2)、每一次请求时都只调用方法 doFilter()进行处理; (3)、停止服务器时调用 destroy()方法,销毁实例。3、listener:类似于 servlet 和 filterweb.xml 的加载顺序是:context- param - listener - filter - servlet 4、interceptor:以 struts 的拦截器为例,加载了 struts.xml 以后,初始化相应拦截器。当 action 请求来时调用 intercept 方法,服务器停止销毁interceptor。三、职责1、servlet:创建并返回一个包含基于客

7、户请求性质的动态内容的完整的 html 页面;创建可嵌入到现有的 html 页面中的一部分 html 页面(html 片段);读取客户端发来的隐藏数据;读取客户端发来的显示数据;与其他服务器资源(包括数据库和 java 的应用程序)进行通信;通过状态代码和响应头向客户端发送隐藏数据。2、filter:filter 能够在一个请求到达 servlet 之前预处理用户请求,也可以在离开 servlet 时处理 http 响应: 在执行 servlet 之前,首先执行 filter 程序,并为之做一些预处理工作;根据程序需要修改请求和响应;在 servlet 被调用之后截获 servlet 的执行3

8、、listener:职责如概念。servlet2.4 规范中提供了 8 个 listener 接口,可以将其分为三类,分别如下:第一类:与 servletContext 有关的 listner 接口。包括:ServletContextListener、ServletContextAttributeListener第二类:与 HttpSession 有关的 Listner 接口。包括:HttpSessionListner、HttpSessionAttributeListener、HttpSessionBindingListener、 HttpSessionActivationListener;第

9、三类:与 ServletRequest 有关的 Listener 接口,包括:ServletRequestListner、ServletRequestAttributeListener4、interceptor:与过滤器十分相似,通过层层拦截,处理用户的请求和响应。四、几个区别:1,servlet 流程是短的,url 传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.2,filter 流程是线性的, url 传来之后,检查之后,可保持原来的流程继续向下执行,被下一个 filter, servlet 接收等,而 servlet 处理之后,不会继续向

10、下传递。filter 功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而 servlet 的功能主要用来主导流程。filter 可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等 3, servlet,filter 都是针对 url 之类的,而 listener 是针对对象的操作的,如 session 的创建,session.setAttribute 的发生,在这样的事件发生时做一些事情。可用来进行:Spring 整合 Struts,为 Struts 的 action 注入属性,web 应用定时任务的实现,在线人数的统计等4,interceptor 拦截器,类似于 f

11、ilter,不过在 struts.xml 中配置,不是在 web.xml,并且不是针对 URL 的,而是针对 action,当页面提交 action 时,进行过滤操作,相当于 struts1.x 提供的 plug-in 机制,可以看作,前者是 struts1.x自带的 filter,而 interceptor 是 struts2 提供的 filter.与 filter 不同点:()不在 web.xml 中配置,而是在 struts.xml 中完成配置,与 action 在一起( 2 ) 可由 action 自己指定用哪个 interceptor 来在接收之前做事 5,struts2 中的过滤器和拦截器的区别与联系:(1)、拦截器是基于 java 反射机制的,而过滤器是基于函数回调的。(2)、过滤器依赖与 servlet 容器,而拦截器不依赖与 servlet 容器。(3)、拦截器只能对 Action 请求起作用,而过滤器则可以对几乎所有请求起作用。(4)、拦截器可以访问 Action 上下文、值栈里的对象,而过滤器不能。(5)、在 Action 的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。五、执行流程图:1、servlet: 2、filter: 3、listener: 4、interceptor:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号