7、过滤器和监听器
过滤器
1、什么是过滤器?
Servlet规范中定义的一种特殊的组件,用来拦截容器的调用过程。容器收到请求之后,首先调用过滤器,然后再调用Servlet
2、过滤器的执行流程: 流程图中可以看出 过滤器和Servlet共享同一个request和response对象
单个过滤器的执行流程:
多个过滤器的执行流程:
3、过滤器的优先级
一个Web应用中,可以有多个过滤器,它们的优先级由位于web.xml文件中的声明顺序决定,具体是按照<filter-mapping>的顺序来决定的。如下代码所示,filter1和filter2都已经注册,执行顺序是filter2 ,filter1 。
- 方便增加或减少某个功能模块,需要添加过滤就多部署一个class修改一下web.xml文件,需要减少某个功能只要删除web.xml中对应的声明即可。
- 方便修改处理逻辑。当把一些功能独立到某个模块时,如果逻辑变了,只修改这一个文件并更新就可以实现功能的改变,而不用修改每一个使用这个插件的组件。
- 将多个模块相同的代码集中写在一个类里面,方便代码的维护
5、如何编写过滤器?
实现Filter接口的三个方法(destroy,init,doFilter),过滤逻辑在doFilter方法中实现
容器启动之后会立即创建过滤器实例(只会创建一个),接下来会调用init方法(只执行一次),FilterConfig:用来读取初始化参数
容器会调用doFilter方法来处理请求,FilterChain(过滤器链):如果调用了该对象的doFilter方法则请求继续向后执行,否则中断请求不再向后执行
容器在销毁过滤器实例之前会调用destroy方法(只执行一次)
web.xml中注册过滤器
监听器
1、什么是监听器?
servlet规范中定义的一种特殊的组件,用来监听容器产生的事件并进行相应的处理。
容器会为每个监听器只创建一个实例。
容器一般会产生什么事件?
绑定数据相关事件
容器调用了session,request,servletContext的setAttribute,removeAttribute产生的事件
生命周期相关事件
容器创建销毁session,request,servletContext等。
2、
原文地址:https://www.cnblogs.com/danielJinyu/p/11392596.html
- Flask-SQLAlchemy
- 2017全球存储大会:存储设备面临三大挑战
- cobbler自动安装系统(Centos7.X)
- Python接口自动化-7-unittest
- cobbler自动安装系统(Centos7.X)
- Linux NTP时间服务器
- 子查询的另一种方式——映射
- LNMP架构之搭建wordpress博客网站
- Nginx的各种报错总结
- 谷歌TensorFlowLite正式发布,机器学习框架向移动端大步挺进!
- ABP+AdminLTE+Bootstrap Table权限管理系统一期
- 18888元秒下的域名sdhlx.com已建站
- 锂离子电池发明人:自动驾驶汽车电池需要更加耐用
- Linux中MySQL5.6编译安装与MySQL5.7二进制安装步骤
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CSS文件夹
- Canvas基础教程(章节3)
- 口算训练 HDU - 6287
- Codeforces Round #674 (Div. 3) A ~ F 详细讲解
- C# 生成chart图表的三种方式
- C# Task.Run调用外部参数
- Git全方位指南,即用即查就可
- Python入门教程笔记(二)控制语句
- Python入门教程笔记(一)简介、变量及基本数据类型
- C#知识点讲解之C#delegate、event、Action、EventHandler的使用和区别
- typescript高级用法之infer的理解与使用
- 基于业务场景下的图片/文件上传方案总结
- LeetCode96|二叉搜索树中的搜索
- LeetCode95|字符串中的第一个唯一字符
- LeetCode94|Pow(x,n)