JavaWeb的三大组件:Servlet程序,Lister监听器,Filter过滤器 。
Filter过滤器是JavaEE的规范,也就是接口
Filter过滤器作用:拦截请求,过滤响应 、
Filter生命周期:
Filter接口中init方法的config参数的主要作用:
获取初始化参数
web.xml文件的部署
<filter>
<!-- 给filter起别名-->
<filter-name>AdminFilter</filter-name>
<!-- 配置filter的全类名-->
<filter-class>Filter_1.AdminFilter</filter-class>
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost3306/users</param-value>
</init-param>
</filter>
servlet类中的获取:
System.out.println("filterConfig的值为"+filterConfig.getFilterName()); //AdminFilter
//获取初始化参数
System.out.println("初始化参数username的值是:"+filterConfig.getInitParameter("username"));
System.out.println("初始化参数url的值是:"+filterConfig.getInitParameter("url"));
System.out.println(filterConfig.getServletContext()); //org.apache.catalina.core.ApplicationContextFacade@5d905b48
Filter多个过滤器运行流程:
多个Filter过滤器执行的特点:
- 所有filter和目标资源默认都执行在同一个线程中
- 多个filter共同执行的时候,它们都使用同一个request对象
- 多个过滤器和目标资源之间的数据是共享的
注意:Filter过滤器只关心请求的地址是否匹配,不关心匹配的资源是否存在。
一个线程可以有多个ThreadLocal,关联多个数据,一个 ThreadLocal只能关联一个线程中的数据。