目录
Filter
概念:Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等..
Filter快速入门
1.定义类,实现 Filter接口,并重写其所有方法
public class FilterDemo implements Filter { public void init(FilterConfig filterConfig).... public void doFilter(ServletRequest request.... public void destroy() {} }
2.配置Filter拦截资源的路径:在类上定义@WebFilter注解
@WebFilter("/*") public class FilterDemo implements Filter {}
3.在doFilter方法中输出一句话,并放行public void doFilter(ServletRequest request...) { System.out.println("filter被执行了..."); //放行 chain.doFilter(request, response); }
Filter执行流程
1.放行后访问对应资源,资源访问完成后,还会回到Filter中吗?会
2.如果回到Filter中,是重头执行还是执行放行后的逻辑呢?放行后逻辑顺序:执行放行前逻辑→放行→访问资源→执行放行后逻辑
放行前,对Request数据进行处理
放行后,对Response数据进行处塑
Filter 拦截路径配置
Filter可以根据需求,配置不同的拦截资源路径@WebFilter(" /*")
public class FilterDemo
>拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截。>目录拦截:/user/*:访问/user下的所有资源,都会被拦截
>后缀名拦截: *.jsp:访问后缀名为jsp的资源,都会被拦截
>拦截所有:/*:访问所有资源,都会被拦截
过滤器链
一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链
Listener
概念:Listener表示监听器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。
Listener分类: JavaWeb中提供了8个监听器。
监听器分类 监听器名称 作用 servletContext监听 servletContextListener 用于对ServletContext对象进行监听(创建、销毁) ServletContextAttributeListener 对ServletContext对象中属性的监听(增删改属性) session监听 HttpSessionListener 对Session对象的整体状态的监听(创建、销毁) HttpSessionAttributeListener 对Session对象中的属性监听(增删改属性) HttpSessionBindingListener 监听对象于Session的绑定和解除 HttpSessionActivationListener 对Session数据的钝化和活化的监听 Request监听 servletRequestListener 对Request对象进行监听(创建、销毁) ServletRequestAttributeListener 对Request对象中属性的监听(增删改属性)
ServletContextListener使用
1.定义类,实现ServletContextListener接口
public class ContextLoaderListener implements ServletContextListener { /** * ServletContext对象被创建:整个web应用发布成功 * @param sce */ public void contextInitialized(ServletContextEvent sce) {} /** * ServletContext对象被销毁:整个web应用卸哉 * @param sce */ public void contextDestroyed(ServletContextEvent sce) {} }
2.在类上添加@WebListener 注解