servlet,过滤器,监听器,拦截器的区别

一、目录

  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

  

原文地址:https://www.cnblogs.com/zmwf/p/9102594.html

时间: 2024-10-11 12:10:39

servlet,过滤器,监听器,拦截器的区别的相关文章

JavaWeb过滤器.监听器.拦截器-?原理&区别

1.拦截器是基于java的反射机制,过滤器是基于函数回调 2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器3.拦截器只能对action请求起作用,过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,

过滤器和拦截器的区别

---------------------siwuxie095 过滤器和拦截器的区别 过滤器:过滤器理论上能过滤任何内容,如:HTML.JSP.Servlet.图片路径 拦截器:拦截器只能拦截 Action 附: Servlet 和 Action 的区别 Servlet:默认第一次访问时创建,创建一次,是单实例对象 Action:每次访问时都创建,创建多次,是多实例对象 [made by siwuxie095]

(转)过滤器和拦截器的区别

1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的

Struts2中过滤器和拦截器的区别

拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比

160831、过滤器和拦截器的区别

过滤器:是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符 拦截器:是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现

Java 过滤器和拦截器的区别

昨天晚上做梦,梦见面试官问我过滤器和拦截器的区别... 过滤器和拦截器的区别:1.过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的. 请求结束返回也是,是在servlet处理完后,返回给前端之前.2.拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的, spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑. 而过滤器是JavaEE标准,只需依赖servlet api ,不

过滤器与拦截器的区别

拦截器是基于Java的反射机制,而过滤器是基于函数回调. 过滤器依赖于servlet容器,而拦截器不依赖于servlet容器. 拦截器只能对action请求起作用,而过滤器则几乎可以对所有的请求起作用. 拦截器可以访问action上下文.值栈里的对象,而过滤器不能. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次.

java web 过滤器跟拦截器的区别和使用

1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截是AOP的一种实现策略. 在Webwork的中文文档的解释为--拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了一种可以提取action中可重用的部分的方式.

Java中过滤器和拦截器的区别

1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖于servlet容器,而拦截器不依赖于servlet容器. 3.拦截器只对action起作用,而过滤器几乎可以对所有请求起作用. 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能. 5.在action的生命周期里,拦截器可以多起调用,而过滤器只能在容器初始化时调用一次. 6.拦截器可以访问IOC容器里的各个bean,而过滤器不能. 原文地址:https://www.cnblogs.com/lxcmyf/

Servlet,过滤器,监听器,拦截器的区别

<因时间仓促,引用别人的博文> 想起struts2和struts1的区别的时 候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看 了看web.xml,一时又发现,咦,servlet.filter.listener?还有个interceptor? 慢慢来吧,需要补课的地方还有很多很多呀.初学的时候都不知道他们存在呢.呵呵. 下面从几个方面阐述一下题目中四个概念的区别与联系: 1.概念 2.生命周期 3.