Java Web 14 — Filter&Listener(过滤器、监听器)

一、Filter:过滤器

1.1 概念

  • web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。
  • 过滤器的作用:一般用于完成通用的操作。如:统一编码处理、敏感字符过滤。

1.2 快速入门

  1. 步骤:
    1. 定义一个类,实现接口Filter
    2. 复写方法
    3. 配置拦截路径
      1. web.xml
      2. 注解配置。@WebFilter("/*")

1.3 过滤器细节

1.3.1 web.xml配置

    <filter>
        <filter-name>FileDemo</filter-name>
        <filter-class>cn.itcast.web.filter.FilterDemo</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FileDemo</filter-name>
        <!-- 拦截路径 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

1.3.2 过滤器执行流程

  1. 执行过滤器
  2. 执行放行后的资源
  3. 回来执行过滤器放行代码下的代码。

1.3.3 过滤器生命周期方法

  1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源。
  2. doFilter:每一次请求被拦截资源时,会执行。执行多次。
  3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源。

1.3.4 过滤器配置详解

  1. 拦截路径的配置
    1. 具体资源路径:/index.jsp,只有访问index.jsp,过滤器才会被执行。
    2. 目录拦截:/user/*,访问/user下的所有资源时,过滤器都会被执行
    3. 后缀名拦截:*.jsp,访问所有后缀名为jsp的资源时,过滤器都会被执行。
    4. 拦截所有资源:/*,访问所有资源时,过滤器都会被执行
  2. 拦截方式的配置:资源被访问的方式
    1. 注解配置
      1. 设置dispatcherType属性:@WebFilter(value="/index.jsp", dispatcherTypes = {DispatcherType.FORWARD, DispatcherType.REQUEST})可拦截多种方式,dispatcherTypes中以数组形式保存
        1. REQUEST:默认值。浏览器直接请求资源
        2. FORWARD:转发访问资源
        3. INCLUDE:包含访问资源
        4. ERROR:错误跳转资源
        5. ASYNC:异步访问资源
    2. web.xml配置
      • 设置<dispatcher></dispatcher>标签,同上5个值

1.3.5 过滤器链(配置多个过滤器)

  • 执行顺序:如果有两个过滤器:过滤器1和过滤器2
    1. 过滤器1
    2. 过滤器2
    3. 资源执行
    4. 过滤器2
    5. 过滤器1
  • 过滤器的先后顺序问题:
    1. 注解配置:按照类名的字符串比较规则,值小的先执行
      • 如:AFilterBFilter,A小,先执行
    2. web.xml:<filter-mapping></filter-mapping>谁定义在上面,谁先执行

二、Listener:监听器

2.1 概念

  • web的三大组件之一
    • 事件监听机制
      • 事件:一件事情
      • 事件源:事件发生的地方
      • 监听器:一个对象
      • 注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码

2.2 ServletContextListener

  • 方法

    • void contextDestroyed(ServletContextEvent sce)ServletContext对象被销毁之前会调用该方法。
    • void contextInitialized(ServletContextEvent sce)ServletContext对象创建之后会调用该方法。
  • 步骤:

    1. 定义一个类,实现ServletContextListener接口

    2. 复写方法

    3. 配置

      1. web.xml

        <!--    注册监听器-->
        	<listener>
                <listener-class>cn.itcast.web.listener.ContextLoaderListener</listener-class>
            </listener>
        
        • 指定初始化参数
        <!--    指定初始化的参数信息-->
            <context-param>
                <param-name>contextFigLocation</param-name>
                <param-value></param-value>
            </context-param>
        
      2. 注解:@WebListener

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整全套资源下载地址:https://download.csdn.net/download/qq_27595745/70761177 【完整课程列表】 完整版Java web开发教程PPT课件 Java开发进阶教程 第01章 JavaScript简介以及基本语法(共15页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第02章 Dom模型,控制客户端元素(共15页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第03章 表单验证,常用函数(共15页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第04章 自定义web服务器(共14页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第06章 SERVLET(共15页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第07章 JSP语法及运行过程(共13页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第08章 JSP内置对象(共22页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第09章 jstl、el、java bean(共18页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器监听器、自定义标签(共19页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第11章 AJAX实现(共11页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第12章 自定义mvc框架(共11页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第13章 spring ioc aop(共18页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第14章 spring mvc介绍,原理以及搭建(共15页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第15章 spring mvc核心对象拦截器(共26页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第17章 自定义orm框架(共11页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第18章 mybatis框架的搭建以及应用(共13页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第19章 mybatis高级应用(共21页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第20章 数据库连接池,缓存(共15页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第22章 常用框架的介绍以及环境搭建(共16页).pptx JS课程案例ebookHTML\网上书店需求文档.doc

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值