过滤器第一篇【介绍、入门、简单应用】(三)

简介: 过滤器是Servlet的高级特性之一,也别把它想得那么高深,只不过是实现Filter接口的Java类罢了!

测试三

直接看下面的代码。我们已经知道了”准备放行“会被打印在控制台上和test.jsp页面也能被访问得到,但“放行完成“会不会打印在控制台上呢?

  public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println("准备放行");
        //执行这一句,说明放行(让下一个过滤器执行,或者执行目标资源)
        chain.doFilter(req, resp);
        System.out.println("放行完成");
    }

答案也非常简单,肯定会打印在控制台上的。我们来看看:5.gif

注意,它的完整流程顺序是这样的:客户端发送http请求到Web服务器上,Web服务器执行过滤器,执行到”准备放行“时,就把字符串输出到控制台上,接着执行doFilter()方法,Web服务器发现没有过滤器了,就执行目标资源(也就是test.jsp)。目标资源执行完后,回到过滤器上,继续执行代码,然后输出”放行完成“

测试四

我们再多加一个过滤器,看看执行顺序。

  • 过滤器1
System.out.println("过滤器1开始执行");
        //执行这一句,说明放行(让下一个过滤器执行,或者执行目标资源)
        chain.doFilter(req, resp);
        System.out.println("过滤器1开始完毕");

过滤器2

       System.out.println("过滤器2开始执行");
        chain.doFilter(req, resp);
        System.out.println("过滤器2开始完毕");

Servlet

   System.out.println("我是Servlet1");

当我们访问Servlet1的时候,看看控制台会出现什么:55.jpg

执行顺序是这样的:先执行FilterDemo1,放行,执行FilterDemo2,放行,执行Servlet1,Servlet1执行完回到FilterDemo2上,FilterDemo2执行完毕后,回到FilterDemo1上


注意:过滤器之间的执行顺序看在web.xml文件中mapping的先后顺序的,如果放在前面就先执行,放在后面就后执行!如果是通过注解的方式配置,就比较urlPatterns的字符串优先级

Filter简单应用

  • filter的三种典型应用:
  • 1、可以在filter中根据条件决定是否调用chain.doFilter(request, response)方法,即是否让目标资源执行
  • 2、在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
  • 3、在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
目录
相关文章
|
1月前
|
设计模式
深入浅出过滤器模式
深入浅出过滤器模式
32 0
|
28天前
|
安全 Java 数据安全/隐私保护
SpringSecurity6从入门到实战之引言和基本概念
《SpringSecurity6从入门到实战》介绍了Spring Security这一强大的Java安全框架,主要用于保护Spring应用程序的安全。它提供认证和授权功能,支持多种认证方式,并具备高度可定制性。文章阐述了权限管理的重要性,包括用户认证(验证用户身份)和用户授权(控制用户访问权限)。相较于其他如Shiro和Sa-Token的安全框架,Spring Security因与Spring生态的深度整合及对OAuth2的支持,常成为微服务项目的选择。
|
1月前
|
编译器 程序员 Linux
【C++入门(上篇)】C++入门学习
【C++入门(上篇)】C++入门学习
|
10月前
|
前端开发
前端学习笔记202303学习笔记第五天-声明和使用过滤器
前端学习笔记202303学习笔记第五天-声明和使用过滤器
43 0
|
11月前
JavaWeb第十二章课后题 过滤器Filter详解
JavaWeb第十二章课后题 过滤器Filter详解
167 0
|
1月前
|
消息中间件 存储 分布式计算
学习笔记:StructuredStreaming入门(十二)
学习笔记:StructuredStreaming入门(十二)
53 0
|
设计模式 缓存 负载均衡
|
XML JSON 前端开发
过滤器知识点20160907
过滤器知识点20160907
79 0
|
缓存 Java 数据库
过滤器第一篇【介绍、入门、简单应用】(四)
过滤器是Servlet的高级特性之一,也别把它想得那么高深,只不过是实现Filter接口的Java类罢了!
111 0
过滤器第一篇【介绍、入门、简单应用】(四)