博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拦截器与过滤器的区别
阅读量:5925 次
发布时间:2019-06-19

本文共 988 字,大约阅读时间需要 3 分钟。

拦截器与过滤器的区别 :

1、拦截器是基于Java的反射机制的,而过滤器是基于函数回调。

2、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

6、执行顺序 :过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。

过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。

一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个请求拦截。

创建一个Filter 只需两个步骤:

(1)创建Filter 处理类:

(2)在web.xml 文件中配置Filter 。

创建Filter 必须实现javax.servlet.Filter 接口,在该接口中定义了三个方法。

void init(FilterConfig config): 用于完成Filter 的初始化。

void destroy(): 用于Filter 销毁前,完成某些资源的回收。

void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。 

过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR</dispatcher>该元素位于filter-mapping中。

转载于:https://www.cnblogs.com/xtdxs/p/6489251.html

你可能感兴趣的文章
ios gb2312转utf-8
查看>>
oop1
查看>>
避免活跃性危险(第十章)
查看>>
快来加入阿里云大学【云学院】班级助理招募—机会稍纵即逝,错过遥遥无期!...
查看>>
基于spring boot 的ssm项目的简单配置
查看>>
一个不成功人士的“成功之道”
查看>>
mysql---复杂的sql语句join的使用(left join,right join)
查看>>
对大数据知识架构的梳理
查看>>
HTTPS实现原理
查看>>
MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
查看>>
SCVMM 2012 R2运维管理九之:添加非信任的Hyper-v主机和群集
查看>>
北京点击科技有限公司董事长兼总裁——王志东经典语录2
查看>>
源码lnmp
查看>>
Tomcat详解
查看>>
php如何读出xml的节点内容 两个例子
查看>>
mysql数据库的备份和二进制日志恢复
查看>>
UITabBarController的基本原理及使用(一)
查看>>
利用Xshell实现非对称秘钥对安全登陆linux服务器(Centos、Ubuntu)
查看>>
专题1.1——Exchange2013部署前准备条件
查看>>
Shell练习题(持续更新)
查看>>