戏说Servlet,Filter,Listener,Interceptor

原创 2012年03月23日 10:43:14

  以前在学习Servlet和Filter及Listener的时候就对三者的认识不是很清晰,现在又加了一个Interceptor,更加迷糊了,于是通过查询资料对四者有了一些认识。

  为了更好的认识它们,我们从以下几个方面来区分它们:

 

一.概念:

 1.Servlet:

   servlet 流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。

 

 2.Filter:

   filter流程是线性的,它就像是像一个职责链,url传来之后,进行预处理,然后传递给下一个filter继续执行,而servlet 处理之后,不会继续向下传递。

 

 3.Listener:

   如果说servlet和filter是查找url进行操作,则listener就是监听对象的动作进行触发操作,有点类似于我们数据库中的触发器。如在session的创建或更改时做一些事情。

 

 4.Interceptor:

   拦截器是动态拦截Action调用的对象。它提供了一种机制使得开发者可以定义action执行之前或之后执行的代码,也可以在一个action执行前阻止其执行。

 

二.作用对象:

 1.针对url:

   servlet,filter都是针对url进行的操作,这点我们通过它们的配置就可以看到,这两个在配置时都需要配置url-pattern。

 

 2.针对对象:

   listener是针对对象的操作,它是在某个对象发生某些动作的时候执行,所以listener是提前封装好的对特定的对象的操作,只需要声明名称和类的位置即可。

 

 3.针对action:

   interceptor是针对action对象进行操作的,它在配置的时候需要和action一起配置才能起作用,当页面提交action时,进行过滤操作。

 

三.作用范围:

 1.Servlet:

   servlet一般是针对特定的url进行操作的,所以它需要在jsp中指定servlet的地址才能跳转过去进行执行。

 

 2.Filter:

  filter一般是针对所有的url进行操作的,它是对所有url的一个公共的操作,所以filter是基于容器的操作,比如字符集过滤器等。

 

 3.Listener:

  listener的范围就是针对它所监听的对象的某个操作,但是在项目一启动就开始进行监听,直到那个动作发生才执行操作,有点类似于“守株待兔”。

 

 4.Interceptor:

  interceptor可以在Action的方法执行之前或者之后做一些处理。

  interceptor类似于filter,也可以说成是针对xwork的filter,下面我们来看一下这两者的区别:

   1)Filter基于回调函数,而Interceptor则基于java本身的反射机制,这是两者最本质的区别。

 

   2)Filter依赖于servlet容器,而Interceptor与servlet容器无关(因为interceptor是XWork中引入的概念,所以它不是Servlet JSR中的概念,因此与servlet容器无关)。

 

   3)Filter的过滤范围比Interceptor大,Filter除了过滤请求外通过通配符可以保护页面,图片,文件等等,而Interceptor只能过滤请求。

 

   对它们的区别有所了解后,我们来看一下它们的执行顺序:

  

   以上是我对这四者的一些拙见,希望来个抛砖引玉,有不对之处,望大家给予指导。

 

Java中Filter、Listener,拦截器的学习,listener、 filter、servlet 加载顺序及其详解

Filter filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区...
  • lexang1
  • lexang1
  • 2016年08月17日 16:18
  • 2761

关于JAVAEE servlet filter listener 的作用以及在整个WEB响应过程中所处的位置和功能

ava Servlet是与平台无关的服务器端组件,运行于Servlet容器中(如Tomcat),Servlet容器负责Servlet和客户端的通信以及调用Servlet的方法,Servlet和客户端的...
  • u014170604
  • u014170604
  • 2014年03月28日 00:33
  • 896

Listener,Filter,Servlet执行顺序和生命周期

Listener,Filter和servlet都是配置在web.xml文件中。 Listener、Filter、Servlet定义: Listener: 首先定义一个Listener...
  • gebitan505
  • gebitan505
  • 2017年04月26日 16:57
  • 1127

Filter、Servlet和Listener区别与联系

1. Filter           实现了javax.servlet.Filter接口,在web.xml中配置与标签指定使用哪个Filter实现类过滤哪些URL链接。只在web启动时进行初始化操作...
  • u010653908
  • u010653908
  • 2016年12月06日 12:47
  • 283

Servlet 过滤器(filter)和Spring 拦截器(Interceptor)区别

转自:http://blog.csdn.net/ggibenben1314/article/details/45341855 一、定义 拦截器 :是在面向切面编程的就是在你的ser...
  • c2223164136
  • c2223164136
  • 2016年04月13日 17:58
  • 2109

Listener,Filter,Servlet执行顺序和生命周期

Listener,Filter和servlet都是配置在web.xml文件中。 具体的配置如下: com.xy.web.listener.TestListener TestFilt...
  • javawebxy
  • javawebxy
  • 2016年01月13日 23:58
  • 6961

web.xml中关于Servlet、Filter、Listener的配置 顺序问题

(一)web.xml不同元素的加载顺序 加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。 web.xm...
  • hanghangde
  • hanghangde
  • 2016年05月02日 21:08
  • 1642

Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别

Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别 0、创建: 加载顺序 监听器-->过滤器-->Servlet. 项目启动后,容器会首先创建声明的各种监听...
  • yansong_8686
  • yansong_8686
  • 2015年12月09日 00:08
  • 1038

Servlet3.0介绍~使用注解标注监听器(Listener)和过滤器(Filter)

Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器。 package me.gacl.web.listener; import javax.servlet...
  • zhengchao1991
  • zhengchao1991
  • 2016年09月29日 12:46
  • 2585

web.xml 中的listener、 filter、servlet 加载顺序及其详解

web.xml 中的listener、 filter、servlet 加载顺序及其详解    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总...
  • fengqilove520
  • fengqilove520
  • 2016年11月30日 13:15
  • 156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:戏说Servlet,Filter,Listener,Interceptor
举报原因:
原因补充:

(最多只允许输入30个字)