Filter即过滤器,是JavaWeb三大组件之一:Filter、Servlet、Listener~
一.简介
- 过滤器可以把对资源的请求拦截下来,从而实现一些特殊功能~
- 特殊功能一般指一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等~
二.使用
1.实现Filter接口
如下,未设置过滤器时可以直接访问:
创建实现类:
import javax.servlet.*;
import java.io.IOException;
public class Filter1 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
}
}
2.配置拦截资源的路径
@WebFilter("/*")
如上的配置即为拦截任何资源~
3.doFilter放行
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("拦截器已执行~");
// 不放行
}
再次重新启动,无法直接访问页面,拦截器已执行~
放行的代码:
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("拦截器已执行~");
filterChain.doFilter(servletRequest,servletResponse);
}
放行成功:
三.执行流程
放行前一般处理Request的数据,放行后一般处理Response的数据~
四.配置拦截路径
五.过滤器链
一个web应用可以配置多个过滤器,称为过滤器链~
优先级按照过滤器类名字符串的自然排序~
六.Listener
监听器可以监听applicantion,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。目前已经不常使用~