Java Web Filter和Interceptor的区别和拦截加载顺序

1、Filter和Intercepter区别

先直接来总结下区别:

1、Filter是Servlet规范的一部分,而Interceptor是Spring等框架提供的;

2、Filter只能在Web应用中使用,而Interceptor没有这个限制,框架提供了就可以使用;

3、Interceptor归Spring管理可以使用IOC中资源,而Filter不能;

4、Filter的拦截粒度就是一个Filter类,Interceptor拦截粒度是方法。

主要的区别就是这么多,我们还可能关心使用场景,原则就是在Spring架构中,优先使用Interceptor,Interceptor不能满足的场景考虑Filter。

2、Java Web请求处理链上的组件加载顺序

加载顺序为:

context-param -> listener -> filter -> servlet

全局上下文参数当然是最先被加载的,

同一组件配置多个时,和mapping顺序一致,mapping必须写在其声明后面。

3、Tomcat中8个listener

1)监听 Session、request、context 的创建于销毁,分别为  

HttpSessionLister、ServletContextListener、ServletRequestListener

2)监听对象属性变化,分别为:

HttpSessionAttributeLister、ServletContextAttributeListener、ServletRequestAttributeListener 

3)监听Session 内的对象,分别为HttpSessionBindingListener 和 HttpSessionActivationListener。与上面六类不同,这两类 Listener 监听的是Session 内的对象,而非 Session 本身,不需要在 web.xml中配置。

有的listener是只会被调用一次,比如ServletContextListener,他是全局上下文监听器。

4、Filter

filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开 servlet后处理response.换种说法,filter其实是一个”servlet chaining”(servlet 链).

一个Filter包括:

1)、在servlet被调用之前截获;

2)、在servlet被调用之前检查servlet request;

3)、根据需要修改request头和request数据;

4)、根据需要修改response头和response数据;

5)、在servlet被调用之后截获.

5、Servlet

Servlet是单实例的,可以不配置其<servlet-mapping>节点,让其成为一个启动初始化作用的类。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值