1:过滤器概念
过滤器就是一种在请求目标资源的中间组件,比喻把污水转换成纯净水中间需要一个污水净化设备,那么这个设备就好比一个过滤器。那么我用图来表示过滤器(可以有多个过滤器)运行的过程
2:Filter(过滤器)接口
Filter接口包含三个方法分别是init、doFilter、 destroy下面先逐个介绍。
2.1:public void init(FilterConfig filterConfig)
这个方法主要来完成初始化过滤器,容器调用这个方法的时候,向过滤器传递FilterConfig对象,FilterConfig的用法和ServletConfig相似,利用FilterConfig对象可以得到ServletContext对象,以及可以得到部署描述符中过滤器初始化的参数。
2.2:public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
该方法和Servlet中的service相似,当客户端请求目标资源的时候,容器就会调用与这个目标资源相关联的过滤器的doFilter方法,在这个方法中可以对请求和响应进行处理,实现过滤器的特定功能,在处理完成之后调用chain.doFilter把请求传给下一个过滤器(目标资源)
2.3:public void destroy()
当过滤器生命结束的时候,容器就会调用该方法来释放过滤器的资源
3:过滤器的配置
过滤器是通过和元素来完成的。
3.1:<filter>
元素
<filter>
元素的属性,<filter-name>
来为过滤器指定一个名字,<filter-class>
元素用于指定过滤器完整的限定类名,<init-param>
用来为过滤器指定初始化参数,他下面有2个属性,一个是<param-name>
参数名称,另一个是<param-value>
参数值。
3.2:<filter-mapping>
元素
<filter-mapping>
下面有3个主要的属性,<filter-name>
用来指定过滤已经在容器声明的过滤器名称,<url-pattren>
和<servlet-name>
这两个任选其中一个,<url-pattren>
表示当请求这样的url时候过滤器被调用,<servlet-name>
表示当这个Servlet被调用时候过滤器被调用(可以有多个Servlet)。
基本知识准备完毕了,现在我们一起开始进行实践。
4:过滤器时间应用
<