过滤器Filter
索引
1什么是过滤器
2过滤器的执行流程
3编写过滤器步骤
4过滤器的生命周期
0
1
什么是过滤器?
filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行。
也就是说当访问请求时,先进入过滤器可以进行拦截也可以放行,也可在其中去写编写一些逻辑处理
0
2
过滤器的执行流程
客户端发送请求后看web.xml有无相匹配的url-pattern,有则进入对应的过滤器,若过滤器放行则正常访问
若是有多个Filter满足,则一层一层的判断。顺序是按web.xml中配置书写的顺序,从上到下
0
3
编写过滤器步骤
1.编写过滤器类并实现Filter接口
public class Filter implements javax.servlet.Filter { @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("来到过滤器---------");
}
}
2.配置到web.xml
<filter>
<filter-name>filter</filter-name>
<filter-class>com.hao.web.filter.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
可以看到在Filter当中有一个doFilter方法,里面是专门写来到过滤器之后的处理,它里面传入了一个filterChain的对象,可以用它来进行放行
filterChain.doFilter(request,response);
0
4
过滤器的生命周期
在Filter中有三种方法init,doFilter,destroy
public class FilterTest implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
} @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
} @Override
public void destroy() {
}
}
init方法
在过滤器创建时调用,服务器启动时会先将过滤器准备完毕,即在服务器启动时(过滤器创建)就会调用Filter的init方法
doFilter方法
在请求后web.xml有匹配的之后进入到过滤器之后的处理就写在这,即请求访问到过滤器中时调用
destroy方法
在过滤器销毁时调用,一般就是服务器关闭时
可以说Filter的生命周期和ServletContext差不多