-
1 讲义
-
2 测验
Filter是JSP核心编程中一个重要的部分,功能类似于servlet,Filter承担的角色相当于守卫[QL1] ,允许合法访问,禁止非法访问。另外,Filter还具有附带参数配置的功能。
[QL1]网络上我们访问资源,只需要知道URL即可访问。这就好比是不是我们知道知道别人家的地址就一定能进到屋里面呢?显然不是,我们还需要有钥匙,或者授权。
概述
Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源等进行拦截[QL2] 。
[QL2]决定是否授权给用户,否让用户访问。
什么是过滤器?
一个Java编写的类
实现了Filter接口
核心方法是doFilter()【详见3.6.1.2】
Filter不是一个Servlet[QL3] ,不能产生一个response,但是能够在request到达servlet之前处理request,在离开servlet时处理response。
[QL3]不能直接使用request和response
过滤器的核心对象
所有的过滤器实现Filter接口
在Filter接口中定义了三个方法
void doFilter[QL5] (ServletRequest request, ServletResponse response, FilterChainchain)
voiddestroy()
[QL4]对过滤器进行初始化
[QL5]实现具体的过滤处理
在上述方法中init方法引入了接口FilterConfig
方法doFilter中引入了接口FilterChain
过滤器的原理
过滤器中的doFilter方法是先于[QL8] servlet的service方法的,因此可以在处理request之前对用户的request进行拦截或者处理。
[QL6]如果通过某个过滤器则必须调用doFilter方法,否则请求将在过滤器中停止。
[QL7]过滤器存在于客户端和目标资源之前;可以有多个过滤器;多个过滤器组成过滤链。
[QL8]WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法。
过滤器的作用及应用场景
对request进行处理(如统一全站编码)
对response进行处理(如禁止缓存等)
决定目标资源是否被访问(权限控制,黑白名单)