全部内容:
- 什么是Filter
- 可以实现什么功能
- filter原理
- 入门案例
- filterChain对象概述
- 生命周期
- FilterConfig概述
- 相关配置
- 开发案例(需求分析)
一. 什么是Filter
Filter称之为过滤器,是servlet中最实用的技术,web开发人员通过Filter技术,对web服务器所管理的资源(jsp,servlet,静态图片或者静态html文件)进行拦截,从而实现一些特殊的功能。简单说就是过滤从服务端向服务器发送请求的。
二. 可以实现什么功能?
敏感词汇的检测
控制用户的访问权限
统计web应用的日志处理功能?
…
2.1 Filter原理
2.2入门案例
实现Filter接口重写方法对这份FilterDemo进行配置(web.xml中)
这里的/*表示拦截所有的请求,如果我们要放行的花使用FilterChain中的doFiletr(ServletRequest request, ServletResponse response)方法
2.3FilterChain对象概述
在FilerDemo中看到参数中有个对象叫FilterChain(过滤器链)
**什么是FilterChain?
在一个web项目中可以编写多个Filter,这些Filter组合起来就是FilterChain,会根据这些Filter在web.xml中注册的顺序,决定先调用哪个Filter,如果没有过滤器了就调用目标文件。
FilterChain对象只有一个方法,就是doFiletr(ServletRequest request, ServletResponse response)放行方法。
三. Filter的生命周期(简单理解就可以)
Filter的创建和销毁都是web服务器控制的:
服务器启动之后就会创建Filter,然后调用init()方法初始化,
服务器关闭就会销毁Filter对象
四. FileterConfig概述
和servletConfig类似,作用就是用来获得Filter相关配置的对象。这里就不赘述。
五. 相关配置
**配置
有三种拦截路径的写法:
完全路径匹配
目录匹配
扩展名匹配
**配置(也是拦截的方法)
直接写servlet的名字就可以进行拦截
**配置(重要)
默认的情况下会拦截页面的请求,如何需要拦截转发呢?
什么是转发?
Dispatch的取值:
Request默认值:拦截请求
Forward拦截转发
Include页面包含的时候进行拦截
Error页面出现全局错误的时候进行拦截
代码实现:(可以配置多个值,既拦截请求又拦截转发)
六. 开发案例
6.1 权限验证过滤器:
需求分析:
网站需要有登陆的功能,在登陆成功之后重定向到后台页面(后台的页面不止一个)如果现在没有登陆直接在地址栏上输入后台的地址,那么这个时候就要拦截。我们就是要编写这样一个过滤器,对没有登陆的用户进行拦截。