过滤器Filter

过滤器Filter

索引

1什么是过滤器

2过滤器的执行流程

3编写过滤器步骤

4过滤器的生命周期

0

1

什么是过滤器?

filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行。

也就是说当访问请求时,先进入过滤器可以进行拦截也可以放行,也可在其中去写编写一些逻辑处理

0

2

过滤器的执行流程

客户端发送请求后看web.xml有无相匹配的url-pattern,有则进入对应的过滤器,若过滤器放行则正常访问

若是有多个Filter满足,则一层一层的判断。顺序是按web.xml中配置书写的顺序,从上到下

0

3

编写过滤器步骤

1.编写过滤器类并实现Filter接口

public class Filter implements javax.servlet.Filter {    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("来到过滤器---------");
    }
}

2.配置到web.xml

<filter>
    <filter-name>filter</filter-name>
    <filter-class>com.hao.web.filter.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

可以看到在Filter当中有一个doFilter方法,里面是专门写来到过滤器之后的处理,它里面传入了一个filterChain的对象,可以用它来进行放行

filterChain.doFilter(request,response);

0

4

过滤器的生命周期

在Filter中有三种方法init,doFilter,destroy

public class FilterTest implements Filter {    
    public void init(FilterConfig filterConfig) throws ServletException {

    }    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

    }    @Override
    public void destroy() {

    }
}

init方法

在过滤器创建时调用,服务器启动时会先将过滤器准备完毕,即在服务器启动时(过滤器创建)就会调用Filter的init方法

doFilter方法

在请求后web.xml有匹配的之后进入到过滤器之后的处理就写在这,即请求访问到过滤器中时调用

destroy方法

在过滤器销毁时调用,一般就是服务器关闭时

可以说Filter的生命周期和ServletContext差不多

本文分享自微信公众号 - IT那个小笔记(qq1839646816),作者:木瓜煲鸡脚

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 两个数组的交集 II

    就相当于是数学集合求交集,很容易想到的就是双指针扫描比较判断是否存入结果。对于这样的方式就选择先排序再比较。

    木瓜煲鸡脚
  • 异常处理

    Exception又分为运行异常(RuntimeException和其下子类)和其他类属于编译时异常

    木瓜煲鸡脚
  • Struts2配置

    Struts2中有很多配置文件可以去配置常量,对同一个量在不同配置文件都配置了,那么生效的肯定是最后加载的,因此需要知道配置文件的加载顺序

    木瓜煲鸡脚
  • 大数据量下的集合过滤—Bloom Filter

    如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都...

    王知无
  • 大数据量下的集合过滤—Bloom Filter

    欠扁的小篮子
  • Object Detection in Foggy Conditions by Fusion of Saliency Map and YOLO

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • Spring Boot 2 实战:如何自定义 Servlet Filter

    有些时候我们需要在 **Spring Boot Servlet Web** 应用中声明一些自定义的 **Servlet Filter** 来处理一些逻辑。比如简...

    码农小胖哥
  • 多媒体大数据分析研究进展综述导读

    选自ACMCSUR 专知编译 参与:左熠昆、Quan 昨天向大家推荐了最新的相关综述论文最新综述文章推荐:自然语言生成、深度学习算法、多媒体大数据分析,今天为大...

    WZEARW
  • Logback中如何自定义灵活的日志过滤规则

    当我们需要对日志的打印要做一些范围的控制的时候,通常都是通过为各个Appender设置不同的Filter配置来实现。在Logback中自带了两个过滤器实现: c...

    程序猿DD
  • 费斯托仿生学习网络项目为未来自动化提供灵感

    费斯托Festo在2014年汉诺威工业博览会上再次展示仿生学习网络项目的最新成果。在展会上,费斯托演示了怎样从大自然中汲取灵感,为未来的的自动化提供解决方案。这...

    机器人网

扫码关注云+社区

领取腾讯云代金券