Javaweb学习笔记9—过滤器
今天来讲javaweb的第9阶段学习。
过滤器,我在本次的思维导图中将过滤器和监听器放在一起总结了,监听器比较简单就不单独写了。
老规矩,首先先用一张思维导图来展现今天的博客内容。
ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载
另外:如果图看不清的话请右击---在新窗口中打开会清楚很多。

1* 作用:
用于过滤请求(Request)与响应(Response)的数据内容.
2* 发展:
* Servlet 2.3版本出现Filter功能.
* Servlet 2.4版本对Filter进行补充.
* 目前主流版本为Servlet 2.5.
* 当前最新版本为Servlet 3.0.
二* 使用Filter:
1* 自定义过滤器,实现Filter接口,并且重写其提供的方法.

2* 对web.xml文件进行相关配置:

3* 注意:
* 使用<filter-name>标签定义的Filter名称是唯一的.
* 使用<url-pattern>标签定义映射路径允许配置多个,表示同时过滤多个资源(静态或动态).
三* 生命周期:
1 * 构造函数:
* 用于Filter的实例化.
* 在Filter的生命周期中只能执行一次.
* 线程安全问题(单例多线程的)
2* init()
* 用于Filter的必要初始化工作.
* 在Filter的生命周期中只能执行一次.
3* doFilter()
* 用于Filter的过滤工作.
* 在Filter的生命周期中执行多次(每次拦截每次执行).
4* destroy()
* 用于Filter的资源释放工作.
* 在Filter的生命周期中只能执行一次.
四* 过滤器链:
1* 什么叫做链:
就是多个过滤器同时过滤同一个资源(静态或动态).
* 控制过滤器链中的过滤器谁先执行:
* 通过web.xml文件中的<filter-mapping>标签出现的先后顺序.
哪个Filter的<filter-mapping>标签先出现先执行,后出现后执行.
2* 过滤器链执行的顺序:
* 如果不是过滤器链的最后一个过滤器,执行chain.doFilter()方法,是发送到下一个过滤器.
* 如果是过滤器链的最后一个过滤器,执行chain.doFilter()方法,是发送到对应Web资源.
3* Filter的映射配置:
A* 配置方式:
* 完全匹配:/servlet/test1
* 目录匹配:/servlet/
* 扩展名匹配:*.do
* 优先级由高到低:完全匹配 -> 目录匹配 -> 扩展名匹配.

B* 过滤Servlet:
如果需要拦截的是Servlet的话,有两种方式配置拦截路径:
* <url-pattern>Servlet的映射配置</url-pattern>
* <servlet-name>Servlet的名称</servlet-name>
例如:
- 使用<url-pattern>标签:<url-pattern>/hello</url-pattern>
- 使用<servlet-name>标签:<servlet-name>HelloServlet</servlet-name>
C* <dispatcher>标签:
<dispatcher>标签配置到达Servlet的方法,有四种取值:REQUEST、FORWARD、INCLUDE和ERROR。可以同时配置多个<dispatcher>标签,如果没有配置<dispatcher>标签,默认为REQUEST。这四种取值的区别如下:
- REQUEST:表示仅当直接请求Servlet时才生效。
- FORWARD:表示仅当某Servlet通过FORWARD到该Servlet时才生效。
- INCLUDE:JSP中可以通过<jsp:include>标签请求某Servlet或调用RequestDispatcher的forward()方法请求某Servlet,仅这种情况下有效。
- ERROR:JSP中可以通过<%@ page errorPage="error.jsp">标签指定错误处理页面,仅这种情况下有效。
<url-pattern>标签与<dispatcher>标签的关系是"且"的关系。只有满足<url-pattern>标签的条件,且满足<dispatcher>标签的条件时,当前过滤器才能生效。
* 实际开发常用方式:
* REQUEST
* FORWARD
* Filter的应用案例:
* 全站乱码问题.
* 自动登录案例.
* 禁用缓存案例.
* 权限管理案例 - 粗粒度权限管理.
Javaweb学习笔记9—过滤器的更多相关文章
- JavaWeb学习笔记九 过滤器、注解
过滤器Filter filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理. 步骤: 编写一个过滤器的类实现Filter接口 实现接口中尚未实现的 ...
- JavaWeb学习笔记总结 目录篇
JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- 【JAVAWEB学习笔记】06_jQuery基础
接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...
- javaweb学习笔记(二)
一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...
- Javaweb学习笔记(一)
一.javaweb学习是所需要的细节 1.发送响应头相关的方法 1).addHeader()与setHeader()都是设置HTTP协议的响应头字段,区别是addHeader()方法可以增加同名的响应 ...
- day68—angularJS学习笔记之-过滤器
转行学开发,代码100天——2018-05-23 今天学习angularJS的过滤器的使用. angular中的常用过滤器用来修改数据格式,主要有以下几类: 1.大写,| uppercase 2.小写 ...
- Javaweb学习笔记——(二十一)——————过滤器
过滤器 过滤器概述 1.什么是过滤器: 过滤器javaweb三大组件之一,它与Serlvet很相似,不过它过滤器是用来拦截请求的,而不是处理 ...
- 学习笔记_过滤器详细(过滤器JavaWeb三大组件之一)
过滤器详细 1 过滤器的生命周期 我们已经学习过Servlet的生命周期,那么Filter的生命周期也就没有什么难度了! (l) init(FilterConfig):在服务器启动时会创建Filte ...
随机推荐
- Python-Django使用MemcachedCache缓存
最近工作中使用到缓存,简单记录之... 关于django的几种缓存方式,就不在做介绍了,网上一搜一大把:1.8.2官方文档, Django 缓存,Python菜鸟之路:django缓存 学习了之后,选 ...
- CTR预估经典模型总结
计算广告领域中数据特点: 1 正负样本不平衡 2 大量id类特征,高维,多领域(一个类别型特征就是一个field,比如上面的Weekday.Gender.City这是三个field),稀疏 ...
- C# 利用Aspose.Cells .dll将本地excel文档转化成pdf(完美破解版 无水印 无中文乱码)
Aspose.Cells .dll下载 http://pan.baidu.com/s/1slRENLF并引用 C#代码 using System; using System.Collections. ...
- $(function() {}),即$(document).ready(function(),什么时候执行?以此为准
$(function() { //执行操作 }); $(function() {}) 是$(document).ready(function()的简写. 这个函数什么时候执行的呢? 答案:DOM加载完 ...
- git操作实战指南
1 背景 小白进入公司,进入日常多人开发,git的使用应该是新人要掌握的第一个技能.git是一个分布式数据存储库,分为远程存储和本地存储,本地存储的话,每一台计算机就相当于一个存储数据库,可以记录和存 ...
- 爱奇艺面试Python,竟然挂在第5轮……
今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考 聊骚阶段 嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗? 我:(这声音也太酥了吧我 ...
- k-means 算法介绍
概述 聚类属于机器学习的无监督学习,在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好.它跟分类的最主要区别就在于有没有“标签”.比如说我们有一组数据,数 ...
- Codeforces - 1033C - Permutation Game - 简单dp - 简单数论
https://codeforces.com/problemset/problem/1033/C 一开始觉得自己的答案会TLE,但是吸取徐州赛区的经验去莽了一发. 其实因为下面这个公式是 $O(nlo ...
- Windows 下openssl安装与配置
编译thirift失败 网上方法很多,大部分是针对32位机的,自己的电脑因为是win7,64位,摸索了很久才安装成功. 环境 WIN7, 64位, vs2005 下载ActivePerl 配置过程中需 ...
- hdu5443 【线段树】
题意: 略 思路: 暴力是可以的O(1e7),这里采用线段树,线段树区间查找O(logn) #include<stdio.h> #include<string.h> #incl ...