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只能过滤请求。
 
   对它们的区别有所了解后,我们来看一下它们的执行顺序:





转载自http://blog.sina.com.cn/s/blog_825f1cb00100yzae.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值