过滤器Filter总结

news2024/12/25 13:17:31

过滤器Filter

    • 1. 简介
    • 2. 快速入门
    • 3. 执行流程
    • 4. 使用细节
      • 4.1 拦截路径
      • 4.2 过滤器链
    • 5. 案例
      • 5.1 需求
      • 5.2 LoginFilter

1. 简介

过滤器是JavaWeb三大组件之一(Servlet、Filter,Listner);

作用
把对资源(servlet、jsp、html等)的请求拦截下来,从而实现一些特殊的功能;
权限控制统一编码处理敏感字符处理等;

:在每一个资源中判断用户是否登录!如果没有登录则不能访问资源!—在Filter中去判断是否登录!

2. 快速入门

Filter和Servlet是JavaWeb的三大组件之一,使用方法和Servlet类似;

  1. 定义类:实现Filter接口(javax.servlet),并重写所有方法;
    在这里插入图片描述
    doFilter() 即核心方法,将来每次访问Filter都会执行;

  2. 配置:在类上定义 @WebFilter,然后配置Filter拦截的资源路径,注解:
    /* 即拦截所有资源;
    在这里插入图片描述

  3. 在doFilter方法中输出 chain.doFilter(),并放行,让请求向后访问。
    在这里插入图片描述

3. 执行流程

  1. 【放行前】,对request数据进行处理,respond为空,将新的request传入doFilter();

  2. 【放行后】,请求访问完资源,r此时respond不为空,要对respond处理!
    在这里插入图片描述
    注意
    请求被放行后,访问完资源,而后还会倒回来经过Filter!此时会执行Filter中chain.doFilter() 后面的代码!

4. 使用细节

4.1 拦截路径

在这里插入图片描述

4.2 过滤器链

一个Web应用,可以配置多个过滤器,这多个过滤器被称为过滤器链;
当配置了多个Filter时,执行的优先级按照过滤器类名(字符串)自然排序;
在这里插入图片描述
注意执行顺序! 过滤器1放行后执行过滤器2;
访问完资源后,先回到过滤器2再执行过滤器1;

5. 案例

5.1 需求

  1. 访问服务器资源时,需要先进行登录验证,如果没有登录则被Filter 拦截,跳转到登录页面;
    如果登录过了,则放行
  2. 登陆相关的静态页面(css、html)要能够被访问,而**不被拦截! **

在这里插入图片描述

5.2 LoginFilter

如果请求是静态页面的url,则后序判断(是否用户登录)则不需要执行!

  1. 要让和登陆相关的静态资源放行,先用String [] 数组记录下这些静态资源;
  2. getRequestURL() 获取当前访问的资源路径;
  3. 判断当前访问的资源中 是否包含之前记录的要放行的等静态资源,如果包含则直接放行并return,不再判断是否登录;

判断是否是静态资源,是则放行再return !
在这里插入图片描述
判断是否登录:
在这里插入图片描述
效果:此时登陆页面的静态资源可以访问;
在这里插入图片描述

如果没有放行静态资源,会跳转到login.jsp并提示,但是缺少html、css等静态资源:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/175271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu22.04 安装 ssh

文章目录Ubuntu22.04 安装 ssh一、 环境配置二、 启动远程连接三、 开放端口四、 远程连接Ubuntu22.04 安装 ssh 一、 环境配置 安装 Ubuntu 系统后,我们首先需要配置管理员 root 用户: sudo passwd root然后,进行软件源的更换&#xff1a…

14 Java集合(Map集合+HashMap+泛型使用+集合面试题)

集合14.11 Map集合14.11.1 Map集合特点14.11.2 Map集合体系结构14.12 HashMap14.12.1 HashMap基本使用14.12.2 HashMap实际应用14.12.3 HashMap练习14.12.4 HashMap底层实现原理14.12.5 put的过程原码14.12.6 resize过程原码14.12.7 get的过程原码14.13 HashTable14.14 泛型高级…

5-1中央处理器-CPU的功能和基本结构

文章目录一.CPU的功能二.CPU的基本结构(一)运算器1.运算器的基本组成2.专用数据通路方式3.CPU内部单总线方式(二)控制器1.基本组成2.实现过程(三)寄存器一.CPU的功能 中央处理器(CPU&#xff0…

并查集的入门与应用

目录 一、前言 二、并查集概念 1、并查集的初始化 2、并查集的合并 3、并查集的查找 4、初始化、查找、合并代码 5、复杂度 二、路径压缩 三、例题 1、蓝桥幼儿园(lanqiaoOJ题号1135) 2、合根植物(2017年决赛,lanqiaoO…

SQL注入篇 - 布尔盲注及延时注入

数据来源 盲注 什么是盲注: 布尔盲注原理 布尔盲注流程 手工盲注思路(以下的文章参考:DVWA-sql注入(盲注) - N0r4h - 博客园) 手工盲注的过程,就像你与一个机器人聊天,这个机器人知…

DGSEA | GSEA做完了不要停,再继续比较一下有意义的通路吧!~

1写在前面 GSEA大家都会用了,但GSEA也有它自己的缺点,就是不能比较两个基因集或通路的富集情况。🤒 今天介绍一个Differential Gene Set Enrichment Analysis (DGSEA),可以量化两个基因集的相对富集程度。😉 2用到的包…

Java中的位运算及其常见的应用

文章目录1、位运算1.1 原码、反码、补码1.2 位运算符2、位运算的应用2.1 取模运算2.2 奇偶性判断2.3 交换变量的值2.4 加法运算1、位运算 1.1 原码、反码、补码 计算机中所有数据的存储和运算都是以二进制补码的形式进行的。a —> 97,A —> 65,‘…

深入学习Vue.js(十二)编译器

模板DSL的编译器 1.编译器概述 编译器实际上是一段程序,他用来将一种语言A翻译为另一种语言B。其中,A被称为源代码,B被称为目标代码。编译器将源代码翻译为目标代码的过程被称为编译。完整的编译过程通常包含词法分析、语法分析、语义分析、…

软件测试——测试用例

作者:~小明学编程 文章专栏:测试开发 格言:热爱编程的,终将被编程所厚爱。 目录 测试用例的设计方法 等价类 边界值 错误猜测法 判定表法(使用于关系组合) 设计步骤 具体例子 正交法 场景设计法…

Redis相关简介

1. Redis 简介 在这个部分,我们将学习以下3个部分的内容,分别是: ◆ Redis 简介(NoSQL概念、Redis概念) ◆ Redis 的下载与安装 ◆ Redis 的基本操作 1.1 NoSQL概念 1.1.1 问题现象 在讲解NoSQL的概念之前呢&am…

8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图

b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话)&…

九大数据分析方法-综合型分析方法以及如何使用这九大分析方法

文章目录3 综合型分析方法3.1 相关性分析法3.1.1 直接相关3.1.2 间接相关3.2标签分析法3.3 MECE法4 如何使用九大方法本文来源,为接地气的陈老师的知识星球,以及付同学的观看笔记。3 综合型分析方法 3.1 相关性分析法 相关性分析法:寻找指标…

ROS2机器人编程简述humble-第二章-Executors .3.5

ROS2机器人编程简述humble-第二章-Parameters .3.4由于ROS2中的节点是C对象,因此一个进程可以有多个节点。事实上,在许多情况下,这样做是非常有益的,因为当通信处于同一进程中时,可以通过使用共享内存策略来加速通信。…

freeglut 在mfc 下的编译

freeglut 是OpenGL Utility Toolkit (GLUT) library 的替代版本,glut 应用广阔,但比较陈旧,很久没有更新。 我原来的opengl 用的是glut, 想更新到64位版本,怎么也找不到合适的下载。最后找到完全替代版本freeglut。fre…

【Linux】线程概念 | 互斥

千呼万唤始出来,终于到多线程方面的学习了! 所用系统Centos7.6 本文的源码👉【传送门】 最近主要是在我的hexo个人博客上更新,csdn的更新会滞后 文章目录1.线程的概念1.1 执行流1.2 线程创建时做了什么?1.3 内核源码中…

每刻和金蝶云星空接口打通对接实战

接通系统:每刻3000中大型企业在用,新一代业财税一体化解决方案提供商。旗下拥有每刻报销、每刻档案、每刻云票、每刻财务共享云平台等,助力企业实现财务数字化转型。对接系统:金蝶云星空金蝶K/3Cloud结合当今先进管理理论和数十万…

算法刷题打卡第72天:最少侧跳次数

最少侧跳次数 难度:中等 给你一个长度为 n 的 3 跑道道路 ,它总共包含 n 1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacle…

Cheat Engine7.4 训练教程(非常详细)

目录 一.CE是干什么的? 二.怎么获得? 三.训练教程 步骤 1: 加载进程 步骤 2: 精确值扫描 步骤 3: 未知的初始值 步骤 4: 浮点数 步骤 5: 代码查找 步骤 6: 指针 步骤 7: 代码注入 步骤 8: 多级指针 提示:这篇文章不是一天写完的&a…

设计模式-建造者模式

1.概述 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦…

基于ffmpeg的视频处理与MPEG的压缩试验(下载安装使用全流程)

基于ffmpeg的视频处理与MPEG的压缩试验ffmpeg介绍与基础知识对提取到的图像进行处理RGB并转化为YUV对YUV进行DCT变换对每个8*8的图像块进行进行量化操作ffmpeg介绍与基础知识 ffmpeg是视频和图像处理的工具包,它的下载网址是https://ffmpeg.org/download.html。页面…