java基础(二十九):过滤器

1.过滤器的意义
2.生命周期
3.在web.xml中如何注册一个过滤器
4.过滤器链对象
5.过滤器初始化信息

1.过滤器的意义:根据URL分析要过滤什么样的请求

           所谓过滤,就是在真正请求资源之前将代表请求的request对象和代表响应的response对象截获,从而实现在执行资源之前和之后做一些额外的控制和操作。

2.生命周期:

           服务器启动,web应用加载,创建这个web应用的所有过滤器。

           创建好后调用init()方法执行初始化操作。

           然后一直驻留在内存中为后续的拦截进行服务,每次拦截到请求调用doFilter()方法执行。

           在服务器关闭或者web应用被移除出容器时,随着web应用的销毁过滤器对象销毁,销毁前调用destroy()方法善后。

3.在web.xml中如何注册一个过滤器

           <filter>

                      <filter-name>demo</filter-name>

                      <filter-class>filter.demo</filter-class>

           </filter>

           <filter-mapping>

                      <filter-name>demo</filter-name>

                      <url-pattern>/session</url-pattern>

                      <servlet-name>session1</servlet-name>

                      <dispatcher>REQUEST</dispatcher>

           </filter-mapping>

           注:

                      一个<filter-mapping>可以有多个<url-pattern>

                      一个<filter-mapping>可以有多个<servlet-name>,其实内容是明确的要拦截的servlet

                      <dispatcher>配置拦截哪种方式的对资源的访问,可以是REQUEST/ERROR/FORWARD/INCLUDE,默认是REQUEST,可以配置多个<dispatcher>

           

4.过滤器链对象:FilterChain

           一个资源可能被多个过滤器过滤,这些过滤器按照在<filter-mapping>中的配置顺序组成一个过滤器链对象。过滤器链对象的最后一个节点一个是要访问的资源。过滤器的各个节点提供了doFilter()方法,一旦这个方法调用,说明当前过滤器节点没问题可以执行下一个节点,如果下一个节点就是资源则直接执行资源。

           chain.doFilter(request,response);

           当两个过滤器都进行了过滤,过滤结果为:

                      demo1前,demo2前,资源,demo2后,demo1后

5.过滤器初始化信息

           <filter>

                      <init-param>

                                 <param-name>name1</param-name>

                                 <param-value>value1</param-value>

                      </init-param>

           </filter>

           注:可用FilterConfig获取初始化信息

                      String value = filterConfig.getInitParameter("name1");

           注:filterConfig对象还可以获取ServletContext对象

                      filterConfig.getServletContext();

猜你喜欢

转载自blog.csdn.net/qq_40594696/article/details/86516863