• Filter快速入门、Filter执行流程、Filter使用细节、Listener概念、分类、ServletContextListener使用


    Filter

    • 概念:Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。
    • 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
    • 过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等…
      在这里插入图片描述

    Filter快速入门

    • 定义类,实现 Filter 接口,并重写其所有的方法
      在这里插入图片描述
      在这里插入图片描述

    • 配置Filter拦截资源的路径:在类定义@WebFilter 注解
      在这里插入图片描述
      在这里插入图片描述

    • 在 doFilter方法中输出一句话,并放行。
      在这里插入图片描述
      在这里插入图片描述

    Filter 执行流程

    在这里插入图片描述

    • 放行后访问对应资源,资源完成访问后,还会回到 Filter 中吗?
    • 如果回到 Filter 中,是重头执行还是执行放行后的逻辑呢?
      • 放行后逻辑
        在这里插入图片描述

    在这里插入图片描述

    • 我在doFilter方法中写了两个输出语句,对应的位置分别在放行前和放行后
      在这里插入图片描述

    • 在 index.jsp中也写了一个输出语句

    • 分别在输出语句中表明输出的顺序
      在这里插入图片描述

    • 运行 tomact 并访问对应的路径
      在这里插入图片描述

    • 控制台输出

    Filter使用细节

    • Filter 拦截路径配置

      • Filter 可以根据需求,配置不同的拦截资源路径
        在这里插入图片描述

        • 拦截具体的资源:/index.jsp:只有访问 index.jsp时才会被拦截

        • 目录拦截:/user/*:访问/user下的所有资源,都会被拦截

        • 后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截

        • 拦截所有:/*:访问所有资源,都会被拦截

      • 下图为拦截 index.jsp的代码
        在这里插入图片描述

      • 当我访问 index.jsp时,我对应的语句会输出在控制台上
        在这里插入图片描述

      • 当我去 访问 hello.jsp时,控制台只会输出hello.jsp文件资源中的输出语句
        在这里插入图片描述

      • 如上证明 拦截路径配置的第一条结论

    • 过滤器链

      • 一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链
        在这里插入图片描述

      • 注解配置的 Filter,优先级按照过滤器类名(字符串)的自然排序

      • 如下,我配置了两个过滤器,分别重写里边的 doFilter()方法,在两个过滤器 放行前和放行后分别设置了输出语句,拦截路径都配置为 index.jsp,这样就形成了一条过滤器链,通过分析每条输出语句输出的顺序,我提前给他们标了相应的序号
        在这里插入图片描述
        呵呵
        在这里插入图片描述

    • 运行tomact并访问对应路径验证是否正确
      在这里插入图片描述

    Listener

    • 概念:Listener表示监听器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。
    • 监听器可以监听就是在application,session,request三个对象创建、销毁或往其中添加修改删除属性时自动执行代码的功能组件
    • Listener分类:JavaWeb中提供了8个监听器
      在这里插入图片描述

    ServletContextListener 使用

    • 定义类,实现 ServletContextListener接口
      在这里插入图片描述

    • 在类中添加 @WebListener 注解

  • 相关阅读:
    设计模式之工厂方法模式应用例题
    java-net-php-python-jspm足球队信息管理系统计算机毕业设计程序
    redis基于docker的集群部署
    RabbitMQ学习笔记(一)(概述)
    JVM虚拟机:如何查看自己的JVM默认的垃圾回收器
    Linux网络基础2之http
    js中的变量以及作用域
    memcpy的使⽤和模拟实现
    SpringBoot教程(五) SpringBoot中Controller用法及传参
    程序员连拿3份offer,平均薪资高达25K,他是如何做到的?
  • 原文地址:https://blog.csdn.net/hihielite/article/details/127591902