Filter的管理机制
我们要了解Filter的管理机制,我们就需要了解Filter到底是什么?
Filter是Tomcat提供的一个组件,这个组件是一个特殊的Servlet,特殊在可以放行,有一个多的参数FilterChain
基本使用
- 自己创建一个类
- 继承HttpFilter(Tomcat9以后的) Tomcat9之前 直接实现Filter接口
- 重写方法doFilter init doFilter destroy
- doFilter方法中有三个参数
- HttpServletRequest HttpServletResponse FilterChain
- 可以抛出两个异常 ServletException IOException
- 配置web.xml
我们来了解一下管理机制:
深入研究一下底层管理机制
继承或实现的关系
接口Serializable
序列化接口,里面没有方法
接口FilterConfig
getFilterName();//获取当前Filter类的名字
getServletContext();//获取全局上下文的
String value = getInitParameter("key");//通过参数名字获得参数值
Enumeration = getInitParameterNames();//获取全部的参数名字
接口Filter
Default void init(FilterConfig filterConfig) throws ServletException {}
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
default void destroy() {}
抽象的父类GenericFilter
目的是一个缺省适配器模式,将大部分的抽象方法都添加了实现。还增加了init方法重载,抽象的父类HttpFilter,做一个参数类型的转化 ,将无协议的参数强制转化成Http协议的参数。
对象的创建 生命周期
filter对象是一个单例的
filter对象的单利模式 采用生命周期托管的方式实现的
filter对象是一个立即加载的方式不能通过配置load-on-startup来进行修改
生命周期也可以通过init doFilter destroy方法重写看
发送请求
从浏览器出发
从服务器出发(转发 重定向)