Fiter 笔记

来源:互联网 发布:arm linux gcc 4.4.3 编辑:程序博客网 时间:2024/06/05 12:05

Filter 笔记







什么是filter

     filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理(介于客户端与访问资源之间的一个对象)







作用 :

1) 公共代码的提取
2) 可以对request和response中的方法进行增强(装饰者模式/动态代理)
3) 进行权限控制







创建一个监听器

步骤与servlet是一样的

1)编写一个过滤器的类实现Filter接口
2)实现接口中尚未实现的方法(着重实现doFilter方法)
3)在web.xml中进行配置(主要是配置要对哪些资源进行过滤)







创建样例 :

创建的监听器的代码如下 :

package club.dohacker.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class MyFilter1 implements Filter {    public MyFilter1() {        // TODO Auto-generated constructor stub    }    /**     * 服务器关闭的时候执行这个方法     */    public void destroy() {        // TODO Auto-generated method stub    }    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        // TODO Auto-generated method stub        // place your code here        //在此填写你的过滤的方法        //下面代码会执行放行操作的        chain.doFilter(request, response);    }    /**     * 创建当前过滤器的时候执行这个方法     * 服务器开启     */    public void init(FilterConfig fConfig) throws ServletException {        // TODO Auto-generated method stub    }}

在web.xml中的配置信息如下 :

 <filter>    <display-name>MyFilter1</display-name>    <filter-name>MyFilter1</filter-name>    <filter-class>club.dohacker.web.filter.MyFilter1</filter-class>  </filter>  <filter-mapping>    <filter-name>MyFilter1</filter-name>    <url-pattern>/MyFilter1</url-pattern>  </filter-mapping>






Filter运作流程


注意:
(1)可以多个过滤器组成一个过滤器链
(2)链的执行顺序是和配置文件的mapping相关的

这里写图片描述







Filter 生命周期 :

  • 创建 : 服务器创建 —->执行init

  • doFilter执行 —–>每次访问执行

    • request : 内部封装的是http的请求的信息(想用 HttpServletRequest的方法,需要自己进行强转)
    • response :待填充的响应信息的对象
    • FileterChain : 过滤器链对象 —>维护当前链子 中的所有Filter , 其中的doFilter的意思是放行到下一个filter;
  • 销毁 :服务器关闭






Filter配置详解 :

这里写图片描述

原创粉丝点击