转自:

http://www.cnblogs.com/shangxiaofei/p/5328377.html

https://www.cnblogs.com/jinb/p/6915351.html

一、目录

  1.概念

  2.生命周期

  3.职责

  4.执行过程

二、内容

  概念

  1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,

可以动态生成web页面它工作在客户端请求与服务器响应的中间层;

  2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求,响应和头信息。

它不能产生一个请求或者响应,它只是修改对某一资源的请求或者响应;

  3.listener:监听器,通过listener可以坚挺web服务器中某一执行动作,并根据其要求作出相应的响应。

就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件;

  4.interceptor:拦截器是对过滤器更加细化的应用,他不仅可以应用在service方法前后还可以应用到其他方法的前后

拦截器;

  5.servlet,filter,listener是配置到web.xml中,interceptor不配置到web.xml中,struts的拦截器配置到struts。xml中。

spring的拦截器配置到spring.xml中;

  生命周期

  1.servlet

  servle的生命周期开始于被装入web服务器的内存中,并在web服务终止或者重新装入servlet的时候结束;

servlet一旦被装入web服务器,一般不会从web服务器内存中删除;直到web服务器关闭;

  装入:启动服务器时加载servlet的实例;

  初始化:web服务器接收到请求时,或者两者之间的某个时刻启动,调用init()

  调用:从第一次到以后的多次访问,都只调用doGet()或dopost)()方法;

  销毁;停止服务器时调用destroy()方法,销毁实例;

  2.filter

  需要实现javax.servlet包的Filter接口的三个方法init(),doFilter(),destroy();

  加载:启动服务器时加载过滤器的实例,并调用init()方法;

  调用:每次请求的时候只调用方法doFilter()进行处理;

  销毁:服务器关闭前调用destroy()方法,销毁实例;

  3.listener

  web.xml的加载顺序是:context-param->listener->filter->servlet

  4.interceptor

  加载配置文件后初始化拦截器,当有对action的请求的时候,调用interceptor方法,最后也是根据服务器停止进行销毁;

  职责

  1.servlet

  创建并返回一个包含基于客户请求性质的动态内容的完整的html页面

  创建可嵌入到现有的html页面中的一部分html页面(html片段)

  读取客户端发来的隐藏数据

  读取客户端发来的显示数据

  与其他服务器资源(包括数据库和java的应用程序)进行通信

  2.filter

  filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应:

  在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;

  在servlet被调用之后截获servlet的执行

  3.listener

  servlet2.4规范提供了8个listener接口,可以将其分为三类,分别如下;

  第一类:与HttpContext有关的listener接口,包括:ServletContextListener、ServletContextAttributeListener

  第二类:与HttpSession有关的listner接口。包括:HttpSessionListener、HttpSessionAttributeListener、

HttpSessionBindingListener、 HttpSessionActivationListener、

  第三类:与ServletRequest有关的Listener接口,包括:ServletRequestListener、ServletRequestAttributeListener

4.interceptor

  与过滤器类似,通过层层拦截,处理用户的请求和响应;

  区别

  1,servlet 流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.

  2,filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等,而servlet 处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。

   filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等

  3, servlet,filter都是针对url之类的,而listener是针对对象的操作的,如session的创建,session.setAttribute的发生,在这样的事件发生时做一些事情。

  可用来进行:Spring整合Struts,为Struts的action注入属性,web应用定时任务的实现,在线人数的统计等;

  4,interceptor拦截器,类似于filter,不过在struts中配置,不是在web.xml,并且不是针对url的而是针对action的,当页面提交时,进行过滤操作;

  执行流程

  1.servlet:

  

  2.filter

  

  

  3.listener

  

  4.interceptor

  

filter listener interceptor的区别的更多相关文章

  1. servlet filter listener interceptor 知识点

    这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下:   概念 生命周期 使命 servlet ...

  2. 过滤器和拦截器filter和Interceptor的区别

    1.创建一个Filter过滤器只需两个步骤 创建Filter处理类 web.xml文件中配置Filter 2.Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的 ...

  3. filter和interceptor的区别

    前言 最近在面试的时候,被问到了这个问题,觉得答得不是很好,在此进行整理和记录,供自己学习,也希望能帮助到大家. 什么是Filter 在java的javax.servlet下有一个接口Filter.任 ...

  4. servlet/filter/listener/interceptor区别与联系

    转自:http://www.cnblogs.com/doit8791/p/4209442.html servlet.filter.listener是配置到web.xml中(web.xml 的加载顺序是 ...

  5. 【转】servlet/filter/listener/interceptor区别与联系

    原文:https://www.cnblogs.com/doit8791/p/4209442.html 一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台 ...

  6. [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别

    原文链接:https://blog.csdn.net/netdevgirl/article/details/51483273 一.概念: 1.servlet:servlet是一种运行服务器端的java ...

  7. servlet & filter & listener & interceptor

    web.xml 的加载顺序是:context- param -> listener -> filter -> servlet * Servlet 对URL生效,用户处理用户的URL请 ...

  8. Filter 和 interceptor 的区别

    1. 拦截器 interceptor ● 特点:interceptor 依赖于web框架,在Spring<MV中就是依赖于springMVC框架.在实现上是基于Java的反射机制,属于面向切面编 ...

  9. 3.Filter和interceptor的区别

    https://blog.csdn.net/qq_36411874/article/details/53996873

随机推荐

  1. python2.x 到 python3.x 中“url”部分变化

    这部分是笔者在亲身项目中遇到的一些变化,并不全,后面将会更新. (1) urllib.urlopen    改为:   urllib.request.urlopen (2) urllib2   删除 ...

  2. Maven学习 三 Maven与Eclipse结合使用

    一检查是否已经集成了Maven 现在的Eclipse一般都是集成了Maven,如果确定集成开发工具是否集成了Maven, Windows->preferences->Maven,查看是否已 ...

  3. TensorFlow环境搭建

    1.使用pip安装TensorFlow 第一步安装pip: 先安装python 官网下载地址https://www.python.org在里面选择适合自己的版本 安装python的过程中pip也会随之 ...

  4. SPI通信协议(非原创,转载他人,用于学习)

    SPI通信协议:1.SPI主从模式:2.数据信号的相位与极性:3.数据帧的格式. 一.什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写.是 Moto ...

  5. 其于OpenXml SDK写的帮助类

    /// <summary> /// 其于OpenXml SDK写的帮助类 /// </summary> public static class OpenXmlHelper { ...

  6. mysql windows 5.7 安装版下载地址

    https://dev.mysql.com/downloads/windows/installer/5.7.html

  7. ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...

  8. 微服务ServiceMesh及三种模式介绍

    1. 前言 今年,ServiceMesh(服务网格)概念在社区里头非常火,有人提出2018年是ServiceMesh年,还有人提出ServiceMesh是下一代的微服务架构基础.作为架构师,如果你现在 ...

  9. VS2017离线安装与Oracle数据库开发环境搭建

    记得之前使用VS2015打开老的MVC4项目,不能右键创建控制器和添加视图,让我非常不习惯!找遍了网络无果,最后只能回到VS2013,但我就是不喜欢用旧的VS,这是不是病... 1.将VS2017离线 ...

  10. 7.ASP.NET MVC 5.0中的Routing【路由】

    大家好,这一篇向大家介绍ASP.NET MVC路由机制.[PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers[HTML帮助类] ] 路由是一个模式匹配系统,它确保 ...