目录

Filter:过滤器

Listener:监听器


Filter:过滤器

1. 概念:
    * 生活中的过滤器:净水器,空气净化器,土匪、
    * web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。
    * 过滤器的作用:
        * 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...

2. 快速入门:
    1. 步骤:
        1. 定义一个类,实现接口Filter
        2. 复写方法
        3. 配置拦截路径
            1. web.xml
            2. 注解

导入javax.servlet包里的filter

注意一定要配置放行

2. 代码:

@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
public class FilterDemo1 implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("filterDemo1被执行了....");
//放行
filterChain.doFilter(servletRequest,servletResponse); } @Override
public void destroy() { }
}

3. 过滤器细节:

1. web.xml配置

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

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


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

4. 过滤器配置详解
        * 拦截路径配置:
            1. 具体资源路径: /index.jsp   只有访问index.jsp资源时,过滤器才会被执行
            2. 拦截目录: /user/*    访问/user下的所有资源时,过滤器都会被执行
            3. 后缀名拦截: *.jsp        访问所有后缀名为jsp资源时,过滤器都会被执行
            4. 拦截所有资源:/*        访问所有资源时,过滤器都会被执行


        * 拦截方式配置:资源被访问的方式
            * 注解配置:
                * 设置dispatcherTypes属性


1. REQUEST:默认值。浏览器直接请求资源
                    2. FORWARD:转发访问资源
                    3. INCLUDE:包含访问资源
                    4. ERROR:错误跳转资源
                    5. ASYNC:异步访问资源
            * web.xml配置
                * 设置<dispatcher></dispatcher>标签即可

5. 过滤器链(配置多个过滤器)
        * 执行顺序:如果有两个过滤器:过滤器1和过滤器2
            1. 过滤器1
            2. 过滤器2
            3. 资源执行
            4. 过滤器2
            5. 过滤器1

* 过滤器先后顺序问题
            1. 注解配置:按照类名的字符串比较规则比较,值小的先执行
                * 如: AFilter 和 BFilter,AFilter就先执行了。
            2. web.xml配置: <filter-mapping>谁定义在上边,谁先执行

Listener:监听器

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

* ServletContextListener:监听ServletContext对象的创建和销毁
    * 方法:
        * 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>
            2. 注解:
                * @WebListener

注解的形式

JavaWeb 补充(Filter&Listener)的更多相关文章

  1. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference

  2. servelt filter listener 的生命周期

    1. servlet    当第一次请求一个servlet资源时,servlet容器创建这个servlet实例,并调用他的 init(ServletConfig config)做一些初始化的工作,然后 ...

  3. Filter&Listener

    Filter&Listener 内容待补充... ...

  4. SpringBoot学习笔记(6)----SpringBoot中使用Servlet,Filter,Listener的三种方式

    在一般的运用开发中Controller已经大部分都能够实现了,但是也不排除需要自己实现Servlet,Filter,Listener的方式,SpringBoot提供了三种实现方式. 1. 使用Bean ...

  5. ServletContextInitializer添加 servlet filter listener

    ServletContextInitializer添加 servlet filter listener https://www.cnblogs.com/pomer-huang/p/9639322.ht ...

  6. SpringBoot---注册Servlet,Filter,Listener

    1.概述 1.1.当使用  内嵌的Servlet容器(Tomcat.Jetty等)时,将Servlet,Filter,Listener  注册到Servlet容器的方法: 1.1.1.直接注册Bean ...

  7. SpringBoot整合WEB开发--(九)整合Servlet,Filter,Listener

    简介: 如果需要整合第三方框架时,可能还是不得不使用Servlet,Filter,Listener,Springboot中也有提供支持. @WebServlet("/my") pu ...

  8. servlet filter listener interceptor 知识点

    这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下:   概念 生命周期 使命 servlet ...

  9. JavaWeb使用Filter进行字符编码过滤 预防web服务中文乱码

    JavaWeb使用Filter进行字符编码过滤 预防web服务中文乱码 准备条件:一个创建好的 JavaWeb 项目 步骤: 1.创建一个类并实现 Filter 接口 import javax.ser ...

随机推荐

  1. JPG学习笔记4(附完整代码)

    #topics h2 { background: rgba(43, 102, 149, 1); border-radius: 6px; box-shadow: 0 0 1px rgba(95, 90, ...

  2. Java NIO wakeup实现原理

    本文转载自Java NIO wakeup实现原理 导语 最近在阅读netty源码时,很好奇Java NIO中Selector的wakeup()方法是如何唤醒selector的,于是决定深扒一下wake ...

  3. m1款MacBook Air 使用3个月总结及原生运行于apple架构软件推荐

    前言 我之前一直是一个坚定的Windows/Android党,大学的时候用过几台iPhone,感觉也就那样.这次m1版本的Mac一发布我直接又转回apple阵营了,11月份的时候官网订了一台m1 版本 ...

  4. Java自学第9期——Lambda表达式

    1.入门 使用场景:如果创建函数式接口(该接口的抽象方法只能有一个)的实例时,使用Lambda表达式更加简洁方便. 2.格式: (形参列表) -> { 代码块 } 3.简化 只有一个参数时,可以 ...

  5. jdbc连接数据库(oracle、mysql)

    很简单,直接贴代码吧!代码注释自认为足够理解! 第一步创建数据库连接类,数据库连接地址.数据库驱动.用户名.密码建议创建为公共变量,方便修改,一目了然. package db; import java ...

  6. VMware 安装 CentOS7 后的简单配置

    1.连网 如果能连网,跳过此步 试着ping一下百度 ping baidu.com 动态分配 IP sudo vim /etc/sysconfig/network-scripts/ifcfg-ens3 ...

  7. kali 下的邮件发送工具 swaks

    kali 下的邮件发送工具 swaks Swaks 是一个功能强大,灵活,可编写脚本,面向事务的 SMTP 测试工具,目前 Swaks 托管在私有 svn 存储库中. 官方项目 http://jetm ...

  8. react入个门

    起步 react 特点 不使用模板 不是一个mvc框架 响应式 轻量级的js库 原理 虚拟dom 将dom抽象成js对象 diff算法 搭建开发环境 react.js 核心文件 react-dom.j ...

  9. 【转载】快速理解android View的测量onMeasure()与MeasureSpec

    笔者之前有一篇文章已经使用onMeasure()解决了listview与scollview的显示冲突问题,博客地址如下: onMeasure简单方法 完美解决ListView与ScollView冲突问 ...

  10. Kilo 使用教程

    写了这么多篇 WireGuard 相关的保姆教程,今天终于牵扯到 Kubernetes 了,不然怎么对得起"云原生"这三个字.如果看到这篇文章的你仍然是个 WireGuard 新手 ...