过滤器FIlter & 动态代理 & 监听器Listener

拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别(自己总结,附上监听器(Listener)) 1.过滤器(Filter) 先展示一个经典配置(在web.xml中配置字符过滤) <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-cl... 阅读详情
Filter

概念:
-web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。
-过滤器的作用:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤…
定义格式:
1. 定义一个类,实现接口Filter
2. 复写方法
3. 配置拦截路径

@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() {}
}

web.xml配置方式:

<filter>
    <filter-name>aaa</filter-name>
    <filter-class>com.itheima.web.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>aaa</filter-name>
    <url-pattern>拦截路径</url-pattern>
    <dispatcher>拦截方式</dispatcher>
</filter-mapping>

过滤器执行流程: 执行过滤器 --> 执行放行后的资源 --> 回来执行过滤器放行代码下边的代码

fliter的生命周期:

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

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

拦截方式
注解配置:
设置dispatcherTypes属性
1. REQUEST:默认值。浏览器直接请求资源
2. FORWARD:转发访问资源
3. INCLUDE:包含访问资源
4. ERROR:错误跳转资源
5. ASYNC:异步访问资源
web.xml配置
设置标签即可

过滤器的执行先后顺序:(先进后出)

  • 执行顺序:如果有两个过滤器:过滤器1和过滤器2
    1. 过滤器1
    2. 过滤器2
    3. 资源执行
    4. 过滤器2
    5. 过滤器1
    6. 注解配置:按照类名的字符串比较规则比较,值小的先执行
      • 如: AFilter 和 BFilter,AFilter就先执行了。
    7. web.xml配置: 谁定义在上边,谁先执行
@WebFilter("/*")
public class LoginFilter implements Filter {


    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println(req);
        //0.强制转换
        HttpServletRequest request = (HttpServletRequest) req;

        //1.获取资源请求路径
        String uri = request.getRequestURI();
        //2.判断是否包含登录相关资源路径,要注意排除掉 css/js/图片/验证码等资源
        if(uri.contains("/login.jsp") || uri.contains("/loginServlet") || uri.contains("/css/") || uri.contains("/js/") || uri.contains("/fonts/") || uri.contains("/checkCodeServlet")  ){
            //包含,用户就是想登录。放行
            chain.doFilter(req, resp);
        }else{
            //不包含,需要验证用户是否登录
            //3.从获取session中获取user
            Object user = request.getSession().getAttribute("user");
            if(user != null){
                //登录了。放行
                chain.doFilter(req, resp);
            }else{
                //没有登录。跳转登录页面

                request.setAttribute("login_msg","您尚未登录,请登录");
                request.getRequestDispatcher("/login.jsp").forward(request,resp);
            }
        }
        // chain.doFilter(req, resp);
    }
动态代理

概念
1. 真实对象:被代理的对象
2. 代理对象:增强方法的对象
3. 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的

  • 实现方式:
  1. 静态代理:有一个类文件描述代理模式

  2. 动态代理:在内存中形成代理类

    • 实现步骤:
    1. 代理对象和真实对象实现相同的接口
    2. 代理对象 = Proxy.newProxyInstance();
    3. 使用代理对象调用方法。
    4. 增强方法
    • 增强方式:
    1. 增强参数列表
    2. 增强返回值类型
    3. 增强方法体执行逻辑
Listener 监听器

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

ServletContextListener:监听ServletContext对象的创建和销毁
void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法
使用方法:

  1. 定义一个类,实现ServletContextListener接口
  2. 复写方法
  3. 配置
    web.xml
//@WebListener
public class ContextLoaderListener implements ServletContextListener {

    /**
     * 监听ServletContext对象创建的。ServletContext对象服务器启动后自动创建。
     *
     * 在服务器启动后自动调用
     * @param servletContextEvent
     */
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //加载资源文件
        //1.获取ServletContext对象
        ServletContext servletContext = servletContextEvent.getServletContext();

        //2.加载资源文件
        String contextConfigLocation = servletContext.getInitParameter("contextConfigLocation");

        //3.获取真实路径
        String realPath = servletContext.getRealPath(contextConfigLocation);

        //4.加载进内存
        try{
            FileInputStream fis = new FileInputStream(realPath);
            System.out.println(fis);
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("ServletContext对象被创建了。。。");
    }

    /**
     * 在服务器关闭后,ServletContext对象被销毁。当服务器正常关闭后该方法被调用
     * @param servletContextEvent
     */
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext对象被销毁了。。。");
    }
}
大厂嵌入式面试常考八股文及算法 1.指向已被释放或无效的内存地址的指针是野指针。互斥锁是一种用于线程同步的机制,用于确保同一时间只有一个线程访问共享资源。多态是面向对象编程中的一种特性,它允许以一种统一的方式处理不同类型的对象,通过相同的接口可以表现出不同的行为。大小端(Endian)指的是在计算机存储和处理多字节数据时,字节的存储顺序。大端序(Big Endian):高位字节存储在低地址,低位字节存储在高地址。类似于将数字的高位放在左边,低位放在右边的表示方式。例如整数值0x12345678在内存中按照大端序排列为。 阅读详情

相关推荐

【TI毫米波雷达】IWR6843AOPEVM-G与DCA1000EVM实战:从硬件连接到数据流解析

本文详细解析了TI毫米波雷达开发套件IWR6843AOPEVM-G与DCA1000EVM的硬件连接、模式配置及数据流处理全流程。针对官方手册中的常见配置错误,提供了避坑指南和实测验证的正确设置方法,包括开关配置、网络参数等关键步骤。通过mmWave Studio软件配置雷达参数,并深入解析数据采集与处理流程,帮助开发者高效实现毫米波雷达应用开发。

weixin_30653023的博客 368

Filter过滤器和动态代理处理机制和案例(Filter过滤器和动态代理结合)

Filter过滤器和动态代理处理机制和案例(Filter过滤器和动态代理结合)一、学习心得:二、Filter过滤器处理机制和介绍1、Filter过滤器简介:2. Filter过滤器的图示机制(方便记忆):3. 这里的第二点和第三点便是它的处理机制4. 案例代码操作:4.1 第一步:FilterDemo.class4.2第二步:index.jsp4.3 点击运行jsp文件 结果:5. `doFilt...

weixin_45673401的博客 1344

ffmpeg(一) ffmpeg+QT开发环境搭建

(exe 程序编译的时候只需要包含 xxx.dll.a 静态导入库,运行的时候才需要 xxx.dll 文件)这个 .pro 文件的配置,是指导程序编译的时候,可以找到对应的动态库。值得一提的是,在Windows中,静态链接库(Static Link Library)的扩展名也是.lib、.dll.a。其实只要你掌握了FFmpeg,也可以很快上手其他音视频开发库,因为底层原理都是一样的,你最终操作的都是一样的数据,比如MP3、MP4文件。导入库:不包含函数的具体实现代码(函数的具体实现代码存储在dll中)

小道士写程序 8205

总结过滤器和拦截器区别,静态代理和动态代理区别

过滤器Filter和拦截器Intercepter的区别: 拦截器是基于Java的反射机制的,而过滤器是基于函数回调。 拦截器不依赖于servlet容器,过滤器依赖于servlet容器。 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注

tonglei111的博客 681

【Qualcomm高通音频】音效调试_录音文件播放有杂音,如何定位原因?

一、录音播放数据处理过程介绍 (1)TX方向 麦克风(硅麦克风或者主机体麦克风)采集模拟音频信号,经过内部CODEC芯片中的adc转换为数字信号,在经过高通音频DSP处理音效后编码为wav/aac/amr/mp3等格式文件。 (2)RX方向 音频文件经过解码、重采样还原为pcm数据,经过DSP处理音效后送到内部CODEC,然后经过DAC转换为模拟信号,送到喇叭。 二、分析步骤 1...

crow_ch的博客 5976

Keil5调试遇坑记:手把手解决J-Link驱动与固件版本冲突(附老版本驱动包)

本文详细解析了Keil5与J-Link调试器版本冲突问题,特别是当出现'The connected J-Link is defective'警告时的解决方案。通过对比升级固件与降级驱动的优缺点,提供了详细的J-Link驱动降级操作指南,包括获取老版本驱动、替换步骤及常见问题排查,帮助开发者高效解决这一常见调试障碍。

metaverse5vr的博客 107

Java反射机制、动态代理(过滤器Filter和拦截器Interceptor)

在介绍过滤器Filter和拦截器Interceptor之前,先大篇幅介绍下Java反射机制和动态代理(本来想着只是简单说明下这两个名称,但下笔介绍过程中发现对反射机制和动态代理一知半解,随进行了深入了解和源码剖析),动态代理主要使用了Java凡是机制来实现,而拦截器Interceptor又是通过动态代理实现的。 一、Java反射机制 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方...

wangpf2011的博客 3764

Obsidian与GPT协作:数学公式从KaTeX到MathJax的无缝转换实践

本文针对Obsidian用户从GPT等AI助手复制数学公式时遇到的KaTeX与MathJax格式不兼容问题,提供了高效的解决方案。重点介绍了KaTeX to MathJax插件的核心作用,它能自动将AI生成的KaTeX格式公式(如\(...\))无缝转换为Obsidian默认支持的MathJax格式($...$),实现复制粘贴后公式即时渲染,极大提升了数学笔记与AI协作的效率和流畅度。

weixin_29209825的博客 139

13、Javaweb_Filter&登陆验证&动态代理&过滤敏感词&Listener

1. 概念:* 生活中的过滤器:净水器,空气净化器,土匪、* web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。* 过滤器的作用:* 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...2. 快速入门:1. 步骤:1. 定义一个类,实现接口Filter2. 复写方法3. 配置拦截路径1. web.xml2. 注解2. 代码:@WebFilter("/*")//访问所有资源之前,都会执行该过滤器。

qq1092881420的博客 979

基于立创EDA的IP5389BZ+IP6829 100W有线15W无线带屏充电宝DIY全流程解析

本文详细解析了基于立创EDA平台,采用IP5389BZ和IP6829芯片DIY一款100W有线快充、15W无线充电并带显示屏的移动电源的全过程。内容涵盖核心功能规划、硬件选型、电路设计、PCB布局、焊接组装、分步调试以及软件逻辑,为电子爱好者提供了一份从原理到实践的完整指南,并重点强调了电池安全与IP6829供电电压等关键注意事项。

weixin_34374684的博客 307

华为OD机考双机位C卷 - 风险投资计划(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 风险投资计划(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 548

过滤器和动态代理解决乱码

主要是解决get乱码问题

chuibuqideniub的博客 1080

SAP 交货成本(运费)

交货成本: 业务场景: 有些产品或供应商,会产生交货成本(运费、关税等) 业务模拟(以运费为例): 1、运费在采购订单体现:计划运费 ME21N创建采购订单,并且包含运费: MIGO收货时: 由上可知,MIGO时运费最终体现在库存(存货)科目中(V),或者价格差异中(S计价时)。 MIRO发票校验: 运费最终体现在单独科目中: 后台配置: 运费在发票时候...

willieyuan的博客 1万+

Filter:过滤器 & Listener:监听器 & 动态代理

web组件 Servlet Filter 过滤器***** 过滤器过滤的是什么 请求。 过滤器是在请求到达目标资源之前,先把请求拦截下来。可以对请求进行修改、拦截,甚至可以修改请求的目标资源路径。也可以直接放行请求,让请求到达目标资源。**** 请求被放行之后,到达目标资源,响应返回时,还会再次走一遍过滤器。我们可以对响应也进行处理。 编写过滤器的方式 1.写一个类实现...

254

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【JavaWeb】Listener & Filter

Listener监听器 一、Listener概述 1、监听器概念 web的三大组件之一。 2、事件监听机制 事件:一件事情 事件源:事件发生的地方 监听器:一个对象 注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码 二、Listener使用 ServletContextListener:监听ServletContext对象的创建和销毁 1、方法 void contextDestroyed(ServletContextEvent sce) :ServletConte

wmh的博客 902

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JavaWeb学习篇9_Filter过滤器、Listener监听器

目录 Filter过滤器 概念 快速入门 过滤器执行流程 过滤器的生命周期方法 过滤器配置详解 拦截路径配置 拦截方式配置 注解配置 web.xml配置 过滤器链(配置多个过滤器) 执行顺序 过滤器先后顺序问题 案例 登录验证 敏感词过滤 增强对象的功能(设计模式) Listener监听器 概念 ServletContextListener 开始 一、Filter过滤器 1.1概念 简单理解,就是可以对浏览器的请求过滤(放行不放行)、加工

xiaosi的博客 1060

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Filter过滤器 和 Listener监听器

Filter:过滤器 和 Listener监听器 Listener:监听器 Filter 1.web中过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 2. 过滤器的作用: *一般用于完成通用的操作:如:登录验证,统一编码处理,敏感字符过滤 3.快速入门: 1.步骤: 1.定义一个类,实现接口Filter ...

罕学 215

Servlet、过滤器、监听器、拦截器

详细介绍Servlet、过滤器、监听器、拦截器,以及他们的关系以及区别。

初心不忘、始终方得 7104

Java里面的过滤器Filter,监听器Listener和拦截器Interceptor的区别

Filter:过滤器 当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 过滤器细节 web.xml配置 &lt;filter&gt; &lt;filter-name&gt;demo1&lt;/filter-name&gt; &lt;filter-class&gt;cn.itcast.web.filter.FilterDemo1&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-m

Rocky balboa 1036

JAVAWEB笔记:Filter过滤器与Listener监听器

以前我没得选,现在我只想把东西学会。 目录Filter:过滤器Listener:监听器 其中Filter过滤器要重点掌握 Filter:过滤器 概念: 生活中的过滤器:净水器,空气净化器 web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 过滤器的作用: 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤… 快速入门: 步骤: 定义一个类,实现接口Filter(这个Filter是javax.servlet下的,容易混淆) 复写方法 .

sleepsleeping的博客 328

Filter:过滤器&动态代理&Listener:监听器

web项目有三大组件: servlet jsp Filter:过滤器 Listener:监听器 Filter:过滤器 概念:生活中的过滤器:净水器,空气净化器,土匪 ​ web中的过滤器:当访问服务器的资源时,过滤器可以将5请求拦截下来,完成一些特殊的功能。 过滤器的作用:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤… 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 web.xml &lt;filter&gt;

小孩与狗的博客 183

JavaWeb组件 -filter过滤器,listener监听器

JavaWeb组件 -filter过滤器,listener监听器filter过滤器定义和概念过滤器:过滤器是JavaWeb又一核心组件。在JavaWeb中过滤的作用可分为三类:1.在请求到达服务器资源之前对请求进行拦截过滤。2.放行服务器响应结果或者资源。3.对请求到达Servlet处理之前进行拦截预处理,对Servlet进响应到浏览器数据时进行拦截处理。简单来说过滤器就是...

qq_41578371的博客 203

JavaWeb(Filter过滤器、Filter案例、Listener监听器)

今日内容一、Filter过滤器1.Filter概述2.Filter快速入门3. 一、Filter过滤器 1.Filter概述 1. 概念: * 生活中的过滤器:净水器,空气净化器,土匪、 * web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 * 过滤器的作用: * 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤... 2.Filter快速入门 1. 步骤: 1. 定义一个类,实现接口Filter 2. 复写方法 3. ..

MysEaiZYH的博客 245

【面试】拦截器、过滤器、监听器 servlet、filter、listener、interceptor 区别总结

1、过滤器: 依赖于servlet容器; 在实现上基于函数回调,可以对几乎所有请求进行过滤; 缺点是一个过滤器实例只能在容器初始化时调用一次; 使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。 2、拦截器: 依赖于web框架,在SpringMVC中就是依赖于Sp...

weixin_44682819的博客 999

Filter过滤器与Listener监听器

过滤器 过滤器简介 filter是servlet中一个重要的组件,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能 ;通过filter可以实现对请求响应编码的统一过滤,对非法访问的过滤,对于常见的XSS攻击过滤,以及敏感词过滤等。 过滤器创建与使用 Filter的创建过程跟S...

speciallove的博客 214

Springboot中使用拦截器、过滤器、监听器

Javaweb三大组件:servlet、Filter(过滤器)、 Listener(监听器)SpringBoot特有组件:Interceptor(拦截器)过滤器、拦截器、监听器、AOP(后续文章介绍)、全局异常处理器(后续文章介绍)是搭建系统框架时,经常用到的部分,全局异常处理器的作用很明显,就是处理接口执行过程中的异常,而过滤器、拦截器和AOP的作用就很丰富了,日志记录、性能监控、安全认证等等可以向上抽取的功能组件,均可以用他们来实现。

程序员一博 4471
上一篇: AJAX & JSON 简单入门
下一篇: JQuery 浅析
ClassGoldenSea
博客等级 码龄7年 2粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值