Filter过滤器的理解(一)

  1. 什么是过滤器
    Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
    它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。使用Filter的完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
  2. 过滤器实现功能
    (1)在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest 。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。
    (2)在HttpServletResponse到达客户端之前,拦截HttpServletResponse 。根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
    (3)Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,Web服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,doFilter方法中有一个filterChain对象,用于继续传递给下一个filter,在传递之前我们可以定义过滤请求的功能,在传递之后,我们可以定义过滤响应的功能
  3. 过滤器的生命周期
    (1)Filter初始化
    @Override
     public void init(FilterConfig filterConfig) throws ServletException {
     
        }

    (2)执行过滤的方法

     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
     // 过滤请求
     System.out.println("MyFiter1在请求到达servlet之前的代码处理");
     // 传递过滤器
     filterChain.doFilter(servletRequest,servletResponse);
     // 过滤响应
     System.out.println("myFilter1在响应回到浏览器之前的代码处理");
        }

    在这个方法中,可以通过filterChain.doFilter方法控制请求是否继续向后传递。
    同样,在这个方法里面可以使用HttpRequest处理请求,使用HttpResponse作出响应。
    (3)销毁过滤器

  4. @Override
    public void destroy() {
        System.out.println("销毁过滤器");
    }
  5.  在web.xml文件中配置Filter
    <!--配置filter-->
        <filter>
            <filter-name>myfilter1</filter-name>
            <filter-class>com.bjsxt.filter.MyFilter1</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>myfilter1</filter-name>
            <url-pattern>/mycontroller1</url-pattern>
        </filter-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值