大数据必学Java基础(一百零八):过滤器的生命周期
2023-02-18 16:32:33 时间
过滤器的生命周期
同servlet对象一样,Filter对象的创建也是交给web服务器完成的,在web服务器创建和使用及最后销毁filter时,会调用filter对应的方法。
一、构造方法
实例化一个Filter对象的方法。
二、初始化方法
public void init(FilterConfig filterConfig);
和我们编写的Servlet程序一样,Filter的创建和销毁由WEB服务器负责。 web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
三、拦截请求方法
public void doFilter
这个方法完成实际的过滤操作,当客户请求访问与过滤器关联的URL的时候,Servlet过滤器将先执行doFilter方法。FilterChain参数用于访问后续过滤器。
四、销毁方法
public void destroy();
Filter对象创建后会驻留在内存,当web应用移除或服务器停止时才销毁。在Web容器卸载Filter对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
五、总体过程
- WEB 容器启动时,会对Filter进行构造并初始化 一次
- 每次请求目标资源时,都会执行doFilter的方法
- WEB容器关闭是,会销毁Filter对象
六、实例代码
package com.lanson.filter;
import javax.servlet.*;
import java.io.IOException;
/**
* @Author: Lansonli
* @Description: MircoMessage:Mark_7001
*/
public class MyFilter implements Filter {
public MyFilter(){
System.out.println("MyFilter constructor invoked");
}
// 初始化方法
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter init invoked");
}
// 作出过滤的方法
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("Filter doFilter 对请求作出过滤");
// 通过一行代码 放行请求
// 放行请求,交给过滤器链继续进行过滤 最后到达资源
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("Filter doFilter 对响应作出过滤");
servletResponse.getWriter().print("filter 追加一些数据");
}
// 销毁方法
@Override
public void destroy() {
System.out.println("MyFilter destory invoked");
}
}
相关文章
- 漫谈图像超分辨率技术
- Centos7 运行Springboot打包后的jar文件的相关操作
- OpenFeign设置超时时间
- nacos集群配置
- 各个微服务认证授权的处理方法
- EasyExcel中无法使用Spring事务的解决办法
- 自定义注解实现防重复提交(纯后端解决)
- RabbitMQ + Haproxy 实现高可用镜像集群
- 开源 | 用深度学习让你的照片变得美丽
- 机器视觉入门知识总结
- Screaming Frog SEO Spider for Mac(网络爬虫开发工具) 18.1注册激活版
- 深度好文:理解可变形卷积和光流对齐
- Nacos2.1.0 - 外网服务器上的集群部署
- 听说,3D ToF传感器将成研发主流!
- markdown语法简介
- 让typecho支持table of contents
- 正则表达式教程
- 记一次bypy的使用
- bad interpreter 没有那个文件或目录
- vim入门