Filter
-
概念:Filter表示过滤器,是Javaweb三大组件(Servlet,Filter,Listener)之一。
-
过滤器可以把对资源的请求拦截下来从而实现一些特殊的需求。
-
过滤器一般完成一些通用的操作,比如:权限控制,统一编码处理,敏感字符处理等等…
Filter 快速入门
-
定义类:实现Filter接口,并重写所有方法
public class FilterDemo implements Filter{ public void init(FilterConfig filterConfig){}; public void doFilter(ServletRequest request,ServletResponse response,Chain chain){}; public void destrory(){}; }
-
配置Filter 拦截资源的路径,在类的定义@WebFilter注解
@WebFilter("/*") public class FilterDemo implements Filter{}
-
在doFilter方法中输出一句话,并放行
public void doFilter(ServletRequest request,ServletResponse response){ System.out.println("filter被执行了..."); //放行 chain.doFilter(request,response); }
Filter 执行流程
-
放行后访问对应资源,资源访问完成后是否还会回到Filter中?
会。
-
如果回到Filter中,是重头执行还是执行放行后逻辑?
执行放行后逻辑。
-
执行流程:
执行放行前逻辑==》放行==》访问资源==》执行放行后逻辑
Filter 使用细节
Filter拦截路径配置
- 拦截具体资源:/index.jsp:只有访问index.jsp时才会被拦截
- 目录拦截:/user/*:访问/user下的所有资源,都会被拦截
- 后缀名拦截:*.jsp:访问后缀名位jsp的资源,都会被拦截
- 拦截所有:/*:访问所有资源,都会被拦截
@WebFilter("/index.jsp")
public class FilterDemo implements Filter {