转自:

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. windows下 zookeeper

    1.zookeeper的安装和配置 下载:http://zookeeper.apache.org/releases.html 把conf目录下的zoo_sample.cfg改名成zoo.cfg,这里我 ...

  2. linux就该这么学,第六天了

    今天学了第六天了,主要讲计划任务了,,at,命令,单次有效,一次性的,crontd服务(周期性)计划任务,crontab -e创建,编辑计划任务.crontab -l查看计划任务,crontaab - ...

  3. python函数(二)

    python函数(二) 变量的作用域 1.局部变量与全局变量 在函数内创建的变量被称为局部变量,这类变量的生命周期与函数相同,当函数执行完毕时,变量也就随之消失. 此类变量只能在函数内部调用,函数外不 ...

  4. VIP之Switch

    Switch II 最大能连接12路输入与12路输出 不能合并数据数 每个输入可以驱动多个输出 每个输出只能被一个输入驱动 当输入没有连接到输出时,可以禁止掉 每个被禁止的输入可以设置成停止或者消耗模 ...

  5. 利用foo函数的Bof漏洞攻击:构造攻击字符串

    利用foo函数的Bof漏洞攻击:构造攻击字符串 一.基础知识储备 objdump反汇编指令.gdb函数调试运行.Perl语言.|管道符 二.实验步骤 1. 通过反汇编了解程序功能及代码 ①反汇编查看文 ...

  6. ReSharper 10.0.0.1 Ultimate 完美破解补丁使用方法

    转自:http://www.leavescn.com/Page/Content.aspx?id=94 ReSharper 10.0.0.1 Ultimate 完美破解补丁使用方法,本资源来自互联网,感 ...

  7. EF6学习笔记(四) 弹性连接及命令拦截调试

    EF6学习笔记总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 本章原文地址:Connection Resiliency and Command Interception 原文 ...

  8. 171. Excel表列序号

    题目:给定一个Excel表格中的列名称,返回其相应的列序号. 例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> ...

  9. C++ lamba使用

    Moderm Effective C++ 条款31 第206提到了按引用捕获局部变量和函数形参时,如果lambda式的生命期依赖于局部变量和函数形参的生命期,需注意空悬引用的问题. 原书的例子不够直观 ...

  10. Scrum 冲刺博客集合

    Day1 博客链接:http://www.cnblogs.com/coolgirls/p/8869839.html Day2 博客链接:http://www.cnblogs.com/coolgirls ...