JavaWeb开发思维导图之——JavaWeb核心Filter过滤器(14)
一 概述
- 过滤器介绍
- Filter
- 使用
- 生命周期
- FilterConfig
- 5种拦截行为
二 内容详情
2.1 过滤器介绍
- 请求到来时,首先由过滤器判断,再决定接下来操作
- 一般用于完成通用操作,例如:登陆验证、统一编码处理、敏感字符过滤等
2.2 Filter
1-Filter介绍:Filtter是一个接口。要实现过滤器功能,必须实现该接口
2-核心方法
- init(config) //初始化方法
- doFilter()//对请求资源和响应资源过滤
- destory() //销毁方法
3-配置方式
- 注解方式-@WebFilter("/*") //添加注解
- 配置声明和映射
4-FilterChain介绍
- 概念:是一个接口,代表过滤器链对象、由Servlet容器提供实现类对象,直接使用即可、过滤器可以定义多个,组成过滤器链
- 方法:doFilter() //放行方法
2.3 使用
1-目的:通过Filter过滤器解决多个资源写出中文乱码问题
2-步骤
- 创建一个Web项目
- 创建两个Servlet功能类,都向客户端写出中文数据
- 创建一个Filter过滤器实现类,重写doFilter核心方法
- 在方法内解决中文乱码,并放行
- 部署并启动项目
- 通过浏览器测试
3-示例(过滤器)
- class FilterDemo1 implements Filter //定义类继承Filter
- @WebFilter("/*") //添加注解
- doFilter(){ filterChain.doFilter()} //处理乱码并放行
4-使用细节
- 配置方式:注解方式-@WebFilter("/*") //添加注解
- 多个过滤器使用顺序:web.xml中配置过滤器(filter-mapping)
2.4 生命周期
1-创建
- 应用加载实例化对象
- 执行init初始化方法
2-服务
- 提供服务的过程
- 执行doFilter方法
3-销毁
- 应用卸载或服务器停止时对象销毁
- 执行destory方法
2.5 FilterConfig
1-介绍
- 是一个接口,代表过滤器的配置对象
- 可以加载一些初始化参数
2-核心方法
- getFilterName() //获取过滤器名称
- getInitParamterNames() //根据key获取value
- getInitParameterNames() //获取所有参数的key
- getServletContext() //获取应用上下文
3-示例:String filterName = filterConfig.getFilterName();
2.6 5种拦截行为
1-说明
- 默认情况下,过滤器不参与过滤
- 若想使用,需要配置
2-过滤器配置
2-1-filter:<async-supported>true</async-supported>//开启异步支持
2-filter-mapping
- <dispatcher>request</dispatcher> //过滤请求,默认值
- <dispatccer>error</dispatccer> //全局错误页面
- <dispatcher>forward</dispatcher> //过滤转发
- <dispatcher>include</dispatcher> //过滤包含(只能动态不支持jsp include静态)
- <dispatcher>anync</dispatcher> //过滤异步
2-3-error-page(全局错误页面)
- exception-type(错误类型)
- location(jsp页面)