转自:

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. MyOD

    一.实现目的: 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 二.功能简介 1.Linux下的od功能是将指定文件内容以八进制.十进制.十六进 ...

  2. OpenCV图像分割1

    1.基于阈值 1.1原理 灰度阈值化,假设输入图像为f,输出图像为g,则阈值化公式如下: g(i,j)=1  当f(i,j)>=T g(i,j)=0 当f(i,j)<T 1.2适用范围 当 ...

  3. Unity3D中声音播放

    Unity3D 播放声音需要使用 Audio Source 组件,并且需要 Audio Listener 组件配合,不然无法听到声音.Main Camera 会默认有 Audio Lisetener. ...

  4. Alpha 冲刺(1)

    Alpha 冲刺 (1/10)   Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 ...

  5. Java连接MySQL数据库详细教程(附网盘下载地址)

    准备工具 Eclipse-oxygen-64位 http://pan.baidu.com/s/1gf48FIj MySQL-5.7.17 http://pan.baidu.com/s/1skD14Cl ...

  6. 端口转发工具lcx使用两类

    lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口.它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入 ...

  7. subarray sum

    public class Solution { /* * @param nums: A list of integers * @return: A list of integers includes ...

  8. 进度条(progress_bar)

    环境:linux.centos6.5 #include<stdio.h> #include<unistd.h> int main() { ]={'\0'}; char ch[] ...

  9. Cordova - IOS浏览器里面数字被当做电话号码

    网页上有连续超过5个数字,ios浏览器就会当做手机号码,如果某行文字有颜色,那么这个连续的数字就没颜色,变黑色了. 解决方法:在html页面头部加入下面代码 <meta name="f ...

  10. Javascript百学不厌 - 尾递归

    虽然偶尔也用过,但是从来没具体来整理过 普通递归: function fac(n) { ) ; ); } fac() 这是个阶乘.但是占用内存,因为: fac(5) (5*fac(4)) (5*(4* ...