当前位置: 首页 > news >正文

拦截器与过滤器的区别

拦截器与过滤器的区别 :

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

相关文章:

  • RPM方式安装MySQL5.6
  • PHP 小技巧
  • Linux系统中三类重要文件的作用与区别
  • 《剑指offer》-前n项和不准用通解和各种判断
  • 内存映射文件原理探索(转载)
  • X-Frame-Options 响应头
  • Excel 总结
  • sklearn中随机森林的参数
  • CHIL-ORACLE-修改密码
  • itunes 无法构建版本问题
  • 继续过中等难度的题目
  • Spring Boot整合WebSocket介绍
  • [技术选型] Node.js
  • Spring cloud子项目
  • oracle 11gR2 ASM添加和删除磁盘
  • 收藏网友的 源程序下载网
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【笔记】你不知道的JS读书笔记——Promise
  • Android 架构优化~MVP 架构改造
  • Java方法详解
  • PHP那些事儿
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • vue 个人积累(使用工具,组件)
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 前嗅ForeSpider采集配置界面介绍
  • 让你的分享飞起来——极光推出社会化分享组件
  • 删除表内多余的重复数据
  • 思维导图—你不知道的JavaScript中卷
  • 提醒我喝水chrome插件开发指南
  • 学习ES6 变量的解构赋值
  • 一、python与pycharm的安装
  • #include
  • #pragma data_seg 共享数据区(转)
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (+4)2.2UML建模图
  • (07)Hive——窗口函数详解
  • (1)Nginx简介和安装教程
  • (a /b)*c的值
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (LeetCode) T14. Longest Common Prefix
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (算法二)滑动窗口
  • (转)jQuery 基础
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .net 流——流的类型体系简单介绍
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /etc/shadow字段详解
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [C#] 基于 yield 语句的迭代器逻辑懒执行