一、Filter是什么?
Fiter表述过滤器,是javaweb三大组件(Servlet,Filter,Listener)之一
过滤器可以把对资源的请求拦截下列,从而实现一些特殊的功能。
过滤器一般完成一些通用的操作,比如:权限控制,同一编码处理,敏感字符处理
web资源里都要写的代码,在这写不就行了,不用复写了
二、Filter快速入门
1.定义类,实现Filter接口,并重写其所有方法
public class Filterdemo implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { } @Override public void destroy() { Filter.super.destroy(); } }
2.配置Filter拦截资源路径:在类定义@WebFilter注解
@WebFilter("/*") public class Filterdemo implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("demo.."); //放行 } @Override public void destroy() { Filter.super.destroy(); } }
3.在doFilter方法中处理后再放行
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("demo.."); //放行 filterChain.doFilter(servletRequest,servletResponse); }
三、Filter执行流程
1.放行后访问玩对应资源,资源访问完成后,还会回到Filter中吗
会
2,如果回到Filter中,是重头执行还是执行放行后的逻辑呢
放行之后的逻辑
四、Filter使用细节
(一)Filter拦截路径配置
拦截具体资源:/index.jsp:只有访问index.jsp时才会被拦截
目录拦截:/user/*:访问/user下的所有资源,都会被拦截
后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截
拦截所有:/*:访问所有资源均会被拦截
(二)过滤器链
一个Web应用,可以配置多个过滤器,这多个过滤器链称为过滤器链
执行顺序:
注解配置的Filter,优先级按照过滤器类名(字符串)的自然排序
五、Listener
用的并不多了
1.概念
Listener表示监听器,是JavaWeb三大组件(Servlet,Filter,Listener)之一
2.描述
监听器可以监听,就是再application,session,request三个对象创建,销毁或者往其中添加修改删除属性时自动执行代码的功能组件
application:代表整个web应用
3.Listeren分类
Javeweb提供了8个监听器