1.概念

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

2.快速入门

1.步骤

  1. 定义一个类,实现接口filter
  2. 复写方法
  3. 配置拦截路径
    1. web.xml
    2. 注解

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

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配置
      • 设置dispatcherTypes = {...}即可

5.过滤器链(配置多个服务器)

  • 执行顺序 过滤器1 过滤器2 执行资源 过滤器2 过滤器1
  • 过滤器先后顺序问题
    • 注解配置:按照类名的字符串比较规则比较,值小的先执行
    • web.xml配置:谁定义在上边,谁先执行
  • 增强对象的功能
    • 设计模式:一些通用的解决固定问题的方式
    • 装饰模式
    • 代理模式
    • 概念
      • 真实对象:被代理的对象
      • 代理对象
      • 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
    • 实现方式
      • 静态代理
      • 动态代理
      • 实现步骤
        • 代理对象和真实对象实现相同的接口
        • 代理对象=Proxy.newProxyInstance();
        • 使用代理对象调用方法
        • 增强方法
      • 增强方式
      • 增强参数列表
      • 增强返回值类型
      • 增强方法体执行逻辑

Listener:监听器

  • 概念:web的三大组件之一
  • 事件监听机制
    • 事件:一件事情
    • 事件源:事件发生的地方
    • 监听器:一个对象
    • 注册监听:将事件,事件源,监听器绑定在一起,当事件源上发生某个事情后,执行监听器代码
  • ServletContextListener:监听ServletContext对象的创建和销毁
    • void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
    • void contextInitialized(ServletContextEvent sce) :ServletContext对象被创建之前会调用该方法

Java-Filter:过滤器请求拦截的更多相关文章

  1. Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)

    Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...

  2. Java Filter过滤器的简单总结

    1.Filter的介绍 Filter技术是servlet 2.3新增加的功能.它能够对Servlet容器的请求和响应对象进行检查和修改. Filter本身并不生成请求和响应对象,只是提供过滤功能. F ...

  3. java filter过滤器及责任链设计模式

    什么是Filter? Filter属于sevlet规范,翻译为过滤器. Filter在web开发中有什么作用? 案例一:一个web站点只有用户登录才能继续访问该站点的资源,那么需要用户每次访问都判断是 ...

  4. java web 过滤器跟拦截器的区别和使用

    注:文章整理自知乎大牛以及百度网友(电脑网络分类达人 吕明),特此感谢! 一.过滤器 1.什么是过滤器? 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个 ...

  5. Spring Filter过滤器,Spring拦截未登录用户权限限制

    转载自:http://pouyang.iteye.com/blog/695429 实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面.  比较好的做法是不管什 ...

  6. Java中过滤器和拦截器的区别

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖于servlet容器,而拦截器不依赖于servlet容器. 3.拦截器只对action起作用,而过滤器几乎可以对所有请求起 ...

  7. Filter—过滤器和拦截器的区别

    1.首先要明确什么是拦截器.什么是过滤器 1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加 ...

  8. java Filter过滤器例外URL设置

    在web.xml声明的一个filter中: <!– session过滤filter –> <filter> <filter-name>SessionFilter&l ...

  9. 【Servlet】Java Serlvet Filter 过滤器

    Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...

  10. struts2 过滤器和拦截器的区别和使用

    java web 过滤器和拦截器的区别和使用  1.1 什么是拦截器:      拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然 ...

随机推荐

  1. P2421-荒岛野人Savage题解

    好久没写题解了啊 洛谷P2421 荒岛野人 题目大意:有一个有很多洞的岛上,住了\(n\)个野人,每个野人的初始位置为\(c[i]\),换洞的速度为\(p[i]\),寿命为\(l[i]\).要求求出洞 ...

  2. ssl协议存在弱加密算法修复,禁用低版本的TLS

    验证用网站:https://www.ssleye.com/ssltool/cipher_suites.html https://www.site24x7.com/zhcn/tools/tls-chec ...

  3. 终于搞懂了!原来 Vue 3 的 generate 是这样生成 render 函数的

    前言 在之前的 面试官:来说说vue3是怎么处理内置的v-for.v-model等指令? 文章中讲了transform阶段处理完v-for.v-model等指令后,会生成一棵javascript AS ...

  4. 前端如何对cookie加密

    在前端对 Cookie 进行加密时,你可以使用加密算法对 Cookie 的值进行加密,然后再将加密后的值存储到 Cookie 中.常用的加密算法包括对称加密算法(如 AES)和非对称加密算法(如 RS ...

  5. 部署Zabbix

    https://blog.csdn.net/qq_57414752/article/details/125819822

  6. yapi 自动化安装遇到的问题

    yapi版本: 1.10.2 yapi server 启动之后 填写好配置,点击开始部署,发现控制台打印如下日志 (node:19879) Warning: Accessing non-existen ...

  7. dotnet c# samples core nativeaot NativeLibrary

    如何在 System.Text.Json 中使用源生成 https://learn.microsoft.com/zh-cn/dotnet/standard/serialization/system-t ...

  8. 设置 ASP.NET Core Web API 中响应数据的格式 AddNewtonsoftJson 使用NewtonsoftJson替换掉默认的System.Text.Json序列化组件

    #region 使用NewtonsoftJson替换掉默认的json序列化组件 .AddNewtonsoftJson(options => { 修改属性名称的序列化方式,首字母小写 //opti ...

  9. 美团面试:说说Netty的零拷贝技术?

    零拷贝技术(Zero-Copy)是一个大家耳熟能详的技术名词了,它主要用于提升 IO(Input & Output)的传输性能. 那么问题来了,为什么零拷贝技术能提升 IO 性能? 1.零拷贝 ...

  10. C#.NET rabbit mq 持久化时报错 durable

    The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=406, text='PRECONDITI ...