servlet/filter/listener/interceptor区别与联系
来源:互联网 发布:adams测量结果数据导出 编辑:程序博客网 时间:2024/06/06 09:52
http://www.2cto.com/kf/201301/186681.html
1、 概念:
a) servlet:是一种运行在服务器端的java应用程序,独立于平台和协议,可以动态生成web页面,它位于客户端请求和服务器响应的中间。
b) filter:是一个可以复用的代码片段,用来转换HTTP请求、响应和头信息。filter不能产生请求和响应,只是修改对某一资源的请求,或者修改某一响应。
c) listener:监听web服务器中某个执行动作,并根据其要求作出响应。通俗的说就是在application,session,request三个对象创建,消亡或者往其中添加、修改或删除属性时自动执行代码的功能组件。
d) interceptor:面向切面编程的,在service或者方法前或者后调用一个方法,比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串或者做其他业务逻辑的操作
servlet/filter/listener是配置到web.xml中的,interceptor不配置到web.xml中,struts的拦截器配置到struts.xml中,spring的拦截器配置到spring.xml中。
2、 生命周期
a) servlet:开始于被装入web服务器的内存,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直到web服务器关闭或者重新启动。
i. 装入:启动服务器时加载servlet实例;
ii. 初始化:web服务器启动时或者web服务器接收到请求时,或者是两者之间的某个时刻,由init方法负责执行完成;
iii. 调用:从第一次到以后的多次访问,都只调用doGet()或doPost方法;
iv. 销毁:停止服务器时调用destroy方法;
b) filter:
i. 启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;
ii. 每次请求时都只调用方法doFilter()进行处理;
iii. 停止服务器调用destroy方法
c) listener:类似于servlet和filter
i. web.xml的加载顺序是:context-paramàlisteneràfilteràservlet
d) interceptor:以struts为例,加载了struts.xml后,初始化相应拦截器,当action请求来时调用intercept方法,服务器停止销毁interceptor。
e)
3、 职责
a) servlet:
i. 创建并返回一个包含基于客户请求的动态内容的完整的html页面;
ii. 创建可嵌入到现有的html页面中的一部分html页面;
iii. 读取来自客户端发来的隐藏数据
iv. 读取来自客户端发来的x显示数据
v. 与其他服务器资源(包括数据库和java的应用程序)进行通信;
vi. 通过状态代码和响应头向客户端发送隐藏数据;
b) filter
i. 在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应;
c) listener:三类接口
i. 与servletContext有关的listener接口;
ii. 与httpsession有关的listener接口;
iii. 与servletRequest有关的listener接口;
d) interceptor:与过滤器类似,通过层层拦截,处理用户的请求和响应。
4、 区别
处理对象
流程
功能
servlet
URL
短,处理完后返回或转向到某一自己知道的页面,流程结束
处理请求
filter
URL
线性的,处理完后接着向下执行,执行下一个filter或servlet
执行检查,替换
listener
对象,如session的创建,session.setAttribute的发生
线性的
Spring整合Struts,为Struts的action注入属性,web应用定时任务的实现,在线人数的统计等
interceptor
action
线性的
当页面提交action时,进行过滤操作
5、 struts2中的过滤器和拦截器的区别和联系
filter
interceptor
调用机制
java反射机制
函数回调
是否依赖servlet容器
是
否
操作对象
只能操作Action请求
对所有请求起作用
是否可访问action上下文、值栈里的对象
不可
可以
在生命周期中多次调用
一次初始化调用一次
多次调用
6、 执行流程
a) servlet
b) filter
c) listener
d) interceptor
- servlet,filter, listener, interceptor 区别与联系
- servlet,filter, listener, interceptor 区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet,filter, listener, interceptor 区别与联系
- servlet,filter, listener, interceptor 区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet,filter, listener, interceptor 区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet,filter, listener, interceptor 区别与联系
- servlet/filter/listener/interceptor区别与联系
- servlet/filter/listener/interceptor区别与联系
- C语言实现简单的通讯录
- JSP/SERVLET入门教程--Servlet 使用入门
- 我的骑行
- Quick-Tip: Linux NAT in Four Steps using iptables
- Linux负载均衡软件LVS之二(安装篇)
- servlet/filter/listener/interceptor区别与联系
- IOS 学习笔记69- Animation温习系列一
- mac或者linux下查看图片规格
- Android Actionar overflow 不显示的问题
- C语言实现几种编码形式的互转 -----(整理加原创)
- Android开发过程中遇到的问题
- 此驱动程序不支持 Java Runtime Environment (JRE) 1.8 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库。
- 项目2-长方柱类
- 程序员总结:帮助你早些明白一些道理