Filter过滤器的作用和工作原理

2023-10-31

对于一个web应用程序来说,过滤器是处于web容器内的一个组件,它会过滤特定请求资源请求信息和响应信息。一个请求来到时,web容器会判断是否有过滤器与该信息资源相关联,如果有则交给过滤器处理,然后再交给目标资源,响应的时候则以相反的顺序交给过滤器处理,最后再返回给用户浏览器。

过滤器类需要实现javax.servlet.Filter,该接口的doFilter()方法是业务处理的核心代码区,类似于servlet的service()方法。doFilter()方法的参数列表有一个FilterChain接口的实现对象,它只有一个方法doFilter(),在调用该方法之前的代码会在达到目标资源前执行,之后的代码会在目标资源已经响应后执行,例如:

public class MyFilter implements Filter{
    //过滤器的逻辑业务方法
    public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException{
    //达到目标资源前的代码
    ...
    //该方法的调用会将请求转发给下一个过滤器或目标资源
    chain.doFilter(req,res);
    //目标资源响应后的代码
    ...
    }
    public void init(FilterConfig f)throws ServletException{}
    public void destroy(){}
}
web.xml配置:

<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>MyFilter</filter-class>Filter完整类名
</filter>
<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>/*Servlet</url-pattern>
</filter-mapping>
凡是请求以“Servlet”结尾的URL资源时,该过滤器都会起到过滤作用。

原文:http://www.cnblogs.com/liaoyiwang/p/3186311.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Filter过滤器的作用和工作原理 的相关文章

  • 在 JTable 中移动行

    我使用 MVC 模式 并且有一个如下所示的 JTable List
  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • 如何测试 JUnit 测试的 Comparator?

    我需要测试 Compare 方法 但我对如何测试感到困惑 我可以看看该怎么做吗 public class MemberComparator implements Comparator
  • 使用 ANTLR 为 java 源代码生成抽象语法树

    如何使用 ANTLR 从 java src 代码生成 AST 有什么帮助吗 好的 步骤如下 前往ANTLR站点 http www antlr org 并下载最新版本 下载Java g和JavaTreeParser g文件来自here htt
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • Java 页面爬行和解析之 Crawler4j 与 Jsoup

    我想获取页面的内容并提取其中的特定部分 据我所知 此类任务至少有两种解决方案 爬虫4j https github com yasserg crawler4j and Jsoup http jsoup org 它们都能够检索页面的内容并提取其
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 检查 protobuf 消息 - 如何按名称获取字段值?

    我似乎无法找到一种方法来验证 protobuf 消息中字段的值 而无需显式调用其 getter 我看到周围的例子使用Descriptors FieldDescriptor实例到达消息映射内部 但它们要么基于迭代器 要么由字段号驱动 一旦我有
  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • 将多模块 Maven 项目导入 Eclipse 时出现问题 (STS 2.5.2)

    我刚刚花了最后一个小时查看 Stackoverflow com 上的线程 尝试将 Maven 项目导入到 Spring ToolSuite 2 5 2 中 Maven 项目有多个模块 当我使用 STS 中的 Import 向导导入项目时 所
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • Keycloak - 自定义 SPI 未出现在列表中

    我为我的 keycloak 服务器制作了一个自定义 SPI 现在我必须在管理控制台上配置它 我将 SPI 添加为模块 并手动安装 因此我将其放在 module package name main 中 并包含 module xml 我还将其放
  • 如何配置eclipse以保持这种代码格式?

    以下代码来自 playframework 2 0 的示例 Display the dashboard public static Result index return ok dashboard render Project findInv
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • 将2-3-4树转换为红黑树

    我正在尝试将 2 3 4 树转换为 java 中的红黑树 但我无法弄清楚它 我将这两个基本类编写如下 以使问题简单明了 但不知道从这里到哪里去 public class TwoThreeFour
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User

随机推荐

  • 微信小程序授权登陆页面

    1 在进入小程序的时候要判断是否有授权 如果没有授权 则要先授权之后 才能登陆到小程序的首页 刚开始 我把login页当作了小程序的首页 这样导致如果已经授权过 这个页面也会一闪而过 用户体验不好 捋了一下思路之后认为 应该把授权的判断放在
  • 华为OD机试 C++【 数据最节约的备份方法】

    描述 你有一堆文件需要备份 但你只有一些500MB的光盘 你的任务是弄清楚 为了备份所有文件 你最少需要多少张光盘 核心要点 每个文件的大小都是整数MB 而且不会超过500MB 文件不能被拆分来备份 给我数据 文件的大小 如 100 500
  • java基础练习题

    1变量 运算符和类型转换 1 1手动输入一个学生的成绩 对这个成绩进行一次加分 加当前成绩的20 输出加分后成绩 Scanner scan new Scanner System in System out println 请输入一个数字 i
  • [Codeforces] combinatorics (R1600) Part.5

    Codeforces combinatorics R1600 Part 5 题单 https codeforces com problemset tags combinatorics 1201 1600 1096B Substring Re
  • 【问答23】Linux移植:如何制作rootfs?

    粉丝问题 如何制作rootfs 安排 想直奔主题的 直接跳到第四章 一 分析 1 文件系统简介 理论上说一个嵌入式设备如果内核能够运行起来 且不需要运行用户进程的话 是不需要文件系统的 文件系统简单的说就是一种目录结构 由于 linux操作
  • python os.mkdir与os.makedirs递归创建目录

    os mkdir创建单层目录 usr bin python coding UTF 8 import os sys 创建的目录 path tmp home monthly daily hourly os mkdir path 0755 os
  • [ESP32C3填坑] AT指令不应答

    烧录固件 固件连接 发布的固件 ESP32 C3 ESP AT 用户指南 latest 文档 espressif com 然后选择 v2 4 2 0 ESP32 C3 MINI 1 AT V2 4 2 0 zip这个版本 再下载烧录软件 工
  • 外观模式(Facade)

    设计模式之外观模式 外观模式的作用 为复杂的系统提供高层的接口 程序这个东西总是会变的越来越大 随着时间的推移 程序中的类会越来越多 而且它们之间相互关联 这会导致程序结构也变得越来越复杂 随之也会使得我们在使用这些类之前 必须弄清楚它们之
  • 中文乱码的原因及解决方法

    1 我们常用的编码表 ASCLL 美国标准信息交换码 gt 用一个字节的7位可以表示 ISO8859 1 拉丁码表 欧洲码表 gt 用一个字节的8位来表示 GB2312 中国的中文编码表 GBK 中国的中文编码表的升级 gt 一个汉字用两个
  • TensorFlow实战练习2

    TensorFlow实现自编码器 自编码器可以使用自身的高阶特征编码自己 自编码器其实是一种神经网络 它的输入和输出是一致的 它借助稀疏编码的思想 目标是使用稀疏的一些高阶特征重新组合来重构自己 它的特点非常明显 第一 期望输入 输出一致
  • VS2019无法登陆解决办法

    文章目录 前言 1 vs登陆 2 解决 总结 前言 今天想看看c代码 打开vs2017 哦豁 登不进去 打开vs2019 哦豁 还是不行 1 vs登陆 到这里就登不进去了 2 解决 vs2019找到账户选项 将嵌入式Web浏览器改为系统We
  • Spring事务嵌套:业务场景事务2异常时需要事务2回滚事务1提交

    目录 1 改变事务2的传播方式REQUIRES NEW 2 异步调用 业务场景 业务提交审核 生成审核账单等数据 事务方法1 审核通过 业务看到账单如果没有问题就去手动审核通过 事务方法2 后期增加了一个自动审核的功能 如果账单中等等一些信
  • 【华为OD机试真题 JAVA】转骰子

    JS版 华为OD机试真题 JS 转骰子 标题 转骰子 时间限制 1秒 内存限制 262144K 语言限制 不限 骰子是一个立方体 每个面一个数字 初始为左1 右2 前3 观察者方向 后4 上5 下6 用123456表示这个状态 放置到平面上
  • 【新手教程】手把手教你搭建腾讯云服务器,图文详细教程

    目 录 本篇字数 1271 背景 服务器搭建 环境搭建 安装JDK Tomcat MySQL驱动 域名绑定 背景 暑假期间 愁着无聊但也不能荒废学业吧 毕竟以后想靠技术混口饭吃 为了实施自己的计划 特地挑了一个便宜的云服务器来用作自己的后台
  • 华为OD机试 - 计算最接近的数(Java)

    题目描述 给定一个数组X和正整数K 请找出使表达式 X i X i 1 X i K 1 结果最接近于数组中位数的下标 i 如果有多个 i 满足条件 请返回最大的 i 其中 数组中位数 长度为N的数组 按照元素的值大小升序排列后 下标为 N
  • SQL 从字符串中提取数字

    一基础使用 声明一个nvarchar类型的变量并赋值declare Name nvarchar 50 set Name 我正在123学 习22 SQL中11 的一些函数 patindex函数返回所查内容在字符串中第一次出现的内容print
  • 敏捷开发 宣言 思想 认识误区

    敏捷软件开发 Agile software Development 敏捷开发是一种软件开发方法 基于迭代和增量开发 通过自组织 跨团队 沟通协作完成开发工作 敏捷宣言的诞生 2001年2月11日到13日 17位软件开发领域的领军人物聚集在美
  • C语言 系统调用操作内核信号集

    使用内存映射可以拷贝文件 对原始文件进行内存映射 创建一个新文件 把新文件的数据拷贝映射到内存中 通过内存拷贝将第一个文件的内存映射区拷贝到第二个文件的内存映射区 释放资源 匿名映射 不需要文件实体来进行内存映射 只能用于有血缘关系的进程间
  • 【Python 1-14】Python手把手教程之——详解函数的高级用法

    作者 弗拉德 来源 弗拉德 公众号 fulade me 传递列表 你经常会发现 向函数传递列表很有用 这种列表包含的可能是名字 数字或更复杂的对象 如字典 将列表传递给函数后 函数就能直接访问其内容 下面使用函数来提高处理列表的效率 假设有
  • Filter过滤器的作用和工作原理

    对于一个web应用程序来说 过滤器是处于web容器内的一个组件 它会过滤特定请求资源请求信息和响应信息 一个请求来到时 web容器会判断是否有过滤器与该信息资源相关联 如果有则交给过滤器处理 然后再交给目标资源 响应的时候则以相反的顺序交给