读取 HTTPServletRequest 的 POST 正文,然后在 Tomcat 中调用 getParameter

2024-04-25

我的应用程序需要检查 POST 请求的内容/数据/正文/有效负载,而不更改后续 getParameter 调用的结果。

从输入流中读取正文:

可以使用 InputStream 读取正文request.getInputStream或 BufferedReader 来自request.getReader.

读取POST参数:

POST 请求通常在请求正文中包含请求参数。这些可以使用检索getParameter.

问题:

首先getParametercall 内部解析 inputStream 并将所有参数插入到参数 HashMap 中。它要求 inputStream 仍然包含用于解析的内容。因此,无法检查内容并仍然可以进行有效的 getParameter 调用。

提议的(但不充分)解决方案

创建一个请求包装器来缓存输入流并返回 getInputStream 的缓存。

我在网上看到了建议的解决方案,但它不起作用,因为getParameter实际上并没有打电话getInputStream,而是指埋在请求对象中的原始inputBuffer。我已经尝试过,无论是从 Servlet 内部还是使用过滤器

我能想到的唯一解决方案是重写 getParameter 以实际手动解析缓存的输入流。但这感觉是个坏主意。

有人有任何可行的替代方案吗? (这是 Tomcat 5.5)这感觉应该是一个常见的用例;我不敢相信这有多困难。


(这是一个相当旧的 tomcat,我假设升级到更现代的 tomcat 不是一种选择。)

您想要做的将需要拦截包装底层 InputStream 的具体 HttpServletResponse 对象的构造。将该 InputStream 包装在推回输入流(或等效流)中是必要的。

Tomcat 5.5 太老了,我什至无法想象如何“正常”完成这一点,但也许您可以编写一个过滤器,使用反射来访问并交换具体请求对象内的 InputStream 对象。

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

读取 HTTPServletRequest 的 POST 正文,然后在 Tomcat 中调用 getParameter 的相关文章

  • 从 Hibernate 生成 SQL 脚本

    我正在为我的 Java Swing 应用程序使用 Hibernate 4 3 5 Final 并且我做了很多工作UDPATE INSERT and DELETE与它 在 HQL 中或与Criteria 现在 我想做的是导出对数据库所做的所有
  • “android.enableUnitTestBinaryResources”已弃用[重复]

    这个问题在这里已经有答案了 我刚刚更新了我的 Android Studio 现在当我构建我的项目时 我收到此错误 选项 android enableUnitTestBinaryResources 已弃用 这 当前默认值为 假 已从当前版本中
  • 如何将json从android发送到php?

    为了将 json 从 android 发布到 php 我使用了 Volley 库StringRequest目的 StringRequest sr new StringRequest Request Method POST url new R
  • Servlet 包含 Tomcat 中的 HTTP 标头

    我有一个 servlet 它的请求调度程序包含另一个 servlet 包含的 servlet 设置了我想在包括小服务程序 因此 我在 include 方法中传入一个自定义 HTTPResponse 对象 该对象捕获来自 servlet 的所
  • Java 中修剪字符串的可能前缀

    I have String str 我想从中提取不包括可能的前缀的子字符串 abc 我想到的第一个解决方案是 if str startsWith abc return str substring abc length return str
  • 何时使用环境变量与系统属性?

    我想知道以下哪种方法是首选方法 我们可以将事情设置为APP HOME path to file export in profile或类似的东西 并将其访问为System getenv APP HOME 或者 也可以使用属性作为 DAPP H
  • Java俄罗斯方块旋转

    我知道这个问题已经被问了很多 但我想知道如何旋转俄罗斯方块 我已经做了一个又长又糟糕的解决方案 大约 170 行代码 但应该有更简单的方法来做到这一点 我的俄罗斯方块由 4 个块组成 它们都知道它们在矩阵中的位置 行和列 Matrix本身是
  • Apache POI - JAVA - 迭代 Excel 中的列

    这里是java新手 我正在编写一个代码 该代码读取 Excel 文件 查看列中的单元格 然后编写如下表所示的内容 我有一个 Excel 文件 如下所示 col1 col2 col3 col4 row1 2 3 1 1 w row2 3 2
  • 从壁纸中获取颜色? - 安卓

    如何找到当前壁纸的 平均 颜色并将该颜色设置为我的小部件上的布局 我正在尝试做的一个例子 这是 AccuWeather 上的设置 您可以使用WallpaperManager getWallpaperColors https develope
  • 如果Jetty的密钥库中有多个证书,它如何选择?

    我们的系统中有一些代码用于自动将自签名证书生成到密钥库中 然后由 Jetty 使用 如果给定主机的密钥已经存在 那么什么也不会发生 但如果它不存在 我们会生成一个新密钥 如下所示 public void generateKey String
  • 如何设置 Eclipse 以停止发生异常的线路?

    如何设置 Eclipse 在发生异常时停止 我有一个 Eclipse 断点设置来在异常时中断 在下面的代码示例中 我遇到的问题是 Eclipse 尝试打开 Integer 源代码 有没有办法让调试器在我的代码示例中显示的位置中断 如果我向下
  • 在 Android 谷歌地图中绘制 4K 折线

    我现在正在开发一个适用于 Android 设备的应用程序 主要功能是在地图上绘制折线以显示城市中每条街道的交通情况 不幸的是 当我绘制大约 3K 折线时 数量会根据屏幕尺寸和缩放级别而减少 我的地图变得非常慢 我没有提及绘制所有线条的时间
  • 当从搜索表单动态构建 WHERE 子句时,如何防止 SQL 注入?

    我知道在 Java 中保护 SQL 查询免受 SQL 注入的唯一真正正确的方法是使用准备好的语句 然而 这样的语句要求基本结构 选择的属性 连接的表 WHERE条件的结构 不会改变 我这里有一个 JSP 应用程序 其中包含一个带有大约十几个
  • 如果表不存在,如何使用 Derby Db 创建表

    我是新来的apache derby我似乎无法工作 CREATE TABLE IF NOT EXISTS table1 可以实现MySql等等我得到了 Syntax error Encountered NOT at line 1 column
  • 需要在 java api 中的 Solr 搜索中搜索文本及其周围的几行

    我正在使用 solr 7 7 2 并且我使用 solrj 在 Solr 中编写了一个 Java 程序 该程序在一个巨大的文本文件中搜索单词 我使用以下代码来显示代表整个文本的搜索结果 SolrQuery params new SolrQue
  • 如何使用 Java glob 模式搜索(区分大小写)文件?

    我正在检查获取路径匹配器 http docs oracle com javase 7 docs api java nio file FileSystem html getPathMatcher 28java lang String 29的方
  • 将 XML 转换为 Java 对象 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 尝试将过滤器添加到 Grizzly+Jersey 应用程序时出现问题

    我有这个服务器初始化类 package magic app main import org glassfish grizzly http server HttpServer import org glassfish jersey grizz
  • 错误:java.lang.NoSuchMethodError:org/springframework/asm/ClassVisitor.(I)V

    我的 POM 中有这两个依赖项 我认为这是造成此问题的原因 但我尝试了许多不同的方法和更新的版本 但没有任何效果对我有用 有人可以帮忙吗 XML文件
  • Spring Data 中 IQueryable 的等效项

    我习惯了 Net 和 LINQtoEntities 尤其是 IQueryable 部分 它允许在获取结果之前通过不同的函数传送请求 Spring数据中是否存在类似的东西 或者任何其他 java ORM 我希望能够做的基本示例 private

随机推荐

  • 哪些浏览器支持console.log()?

    所有浏览器都支持这个吗 我想使用输出错误console log 但想知道是否所有浏览器都支持此功能 console log Error etc 不 并非所有浏览器都支持console log因为它不是标准的一部分 而是 DOM 的扩展 因此
  • 存储对字符串的引用

    我有一个具有 3 个字符串属性的类 我想将它们存储在一个列表中 以便当我更改列表的字符串时 它们也会在类中更新 如果我使用类对象 这很容易做到 但字符串似乎表现不同 它似乎为列表创建了对象的副本 而不是拥有指向该对象的指针 如果是 C 我该
  • 在 R 中使用 stringr 的具有非捕获组的正则表达式

    我正在尝试将非捕获组与str extract函数从stringr包裹 这是一个例子 library stringr txt lt foo str extract txt f o 这返回 foo 虽然我希望它只会返回 oo 就像在这篇文章中一
  • 在 Windows Vista / 7 中从 C# 访问网络摄像头的“首选”方法

    我发现了很多讨论 WIA Windows 便携式设备 API 和 DirectShow 并给出示例代码 用于从 C 访问网络摄像头的帖子 但是当您研究每种方法时 您似乎会遇到这些都是 旧 方法的参考资料 因此 问题是 当运行 Windows
  • 将外部链接设为 target="_blank" 是否可以接受?

    我有点困惑是否应该在我的网站上创建指向外部的链接 target blank 这种做法是否会对您网站的可用性产生负面影响 即破坏 后退按钮轨迹 大多数用户是否普遍认为它很烦人 在某些情况下可以接受 但在其他情况下则不能接受吗 我希望为我的所有
  • kubectl:描述与获取 -o <格式>

    在 kubectl 中 两者describe and get o
  • 我们如何以编程方式检测设备正在运行哪个 iOS 版本? [复制]

    这个问题在这里已经有答案了 我想检查用户是否在低于 5 0 的 iOS 上运行应用程序并在应用程序中显示标签 如何以编程方式检测用户设备上正在运行哪个 iOS Thanks 当前最佳版本 不需要在 NSString 中处理数字搜索就是定义m
  • Scrapy Python Craigslist Scraper

    我正在尝试使用 Craigslist 分类广告Scrapy提取待售物品 我能够提取日期 帖子标题和帖子 URL但提取时遇到问题price 由于某种原因 当前代码提取all的价格 但是当我删除 在价格范围之前查找价格字段返回为空 有人可以查看
  • WHERE 日期时间早于某个时间(例如 15 分钟)

    我在看 MySQL选择时间戳列从现在到10分钟前的行 https stackoverflow com questions 3480947 mysql select rows where timestamp column between no
  • Visual Studio 2015 错误 500.19

    我在 VS 2015 中打开项目时遇到问题 在 VS 2012 和 VS 2013 中一切正常 但是当我在 VS 2015 中启动 Web 应用程序时 加载 css 和 js 文件时出现错误 500 19 我知道 这应该是因为权限的原因 所
  • 1 个 aspx 文件中唤醒 .NET 的绝对最少代码

    作为编写 aspx 文件的绝对最小值 您会编写什么 目的是强制 net 处理程序运行 有时我想做一个简短的手写代码来检查iis功能 在较旧的语言中这很容易 HTML你好世界 ASP ASP NET这工作得很好 但很笨拙 是的 不过 如果还要
  • ngserve --open 报告端口 4200 已在使用,但实际上尚未使用

    当我尝试使用命令运行我的角度应用程序时 ng服务 o 端口4200 它显示错误 例如 端口 4200 已被使用 请尝试其他端口 但我检查发现 使用此命令该端口中没有正在运行的进程 sudo lsof i P n sudo lsof i P
  • Web API ODataResult 始终序列化为 Atom

    我正在从新返回 ODataResultWeb API OData包 http blogs msdn com b alexj archive 2012 08 15 odata support in asp net web api aspx如下
  • 如何使用environment.yaml文件在Python中创建虚拟环境?

    我有一个requirements yaml 文件 我想使用它创建一个python 虚拟环境 该文件看起来像这样 dependencies python 3 7 5 pip 19 3 1 pip jupyter 1 0 0 pandas 1
  • 如何在rails中为options_from_collection_for_select添加数据属性

    将此视为我的选择标签 这工作正常 但我需要一个数据属性 product id不管用 我怎样才能得到ID too 尝试以下操作
  • tx_news 中内容元素的翻译显示默认语言

    环境 打字3 8LTS 新闻 6 3 0 也用 7 x 进行了检查 新闻列表视图 页面 已翻译 新闻详细视图 页面 已翻译 新闻记录翻译 Problem 当我访问语言 UID 1 的页面时 新闻记录本身会被翻译 例如headline 在详细
  • 类消息的接收者 SKViaPoint 是前向声明

    我试图用以下命令创建 SKViaPoint 的实例 SKViaPoint point SKViaPoint viaPoint 1 withCoordinate coordinate But I am getting a following
  • 从 p:inputText javascript 获取值文本

    我正在尝试一些简单的事情 只是为了获取 a 中的文本值p inputText想到了 Javascript 但我不明白 也许这是一个与 Primefaces 不同的过程 因为如果我不使用它 我就不会遇到这个问题 My code
  • 将字符串元组转换为元组

    我有一个具有以下格式的输入文件 1 1 2 1 add 11 1 2 1 3 div 2 3 1 4 1 3 2 4 2 times 240 2 2 2 3 minus 3 每一行都是我要创建的一个元组 如何将每个字符串行转换为元组 例如
  • 读取 HTTPServletRequest 的 POST 正文,然后在 Tomcat 中调用 getParameter

    我的应用程序需要检查 POST 请求的内容 数据 正文 有效负载 而不更改后续 getParameter 调用的结果 从输入流中读取正文 可以使用 InputStream 读取正文request getInputStream或 Buffer