Servlet 包含 Tomcat 中的 HTTP 标头

2024-05-05

我有一个 servlet,它的请求调度程序包含另一个 servlet。

包含的 servlet 设置了我想在包括小服务程序。因此,我在 include() 方法中传入一个自定义 HTTPResponse 对象,该对象捕获来自 servlet 的所有反馈活动。

问题是我的自定义响应中未设置标头。我已经在调试中运行并检查了 Tomcat 用它自己的响应对象包装我的自定义响应对象的情况。 setHeader 调用转到此包装类,并且永远不会传播到我的自定义响应对象。

我想 Tomcat 这样做是为了保护客户端免于将标头设置在错误的位置。有趣的是,同样的方法在 Jetty 中的工作方式与我所期望的一样。

我已经有一段时间没有认真地做 Servlet 了,所以我在这里有点挣扎。我试图弄清楚如何从通过dispatcher.include() 调用的servlet 读取响应标头。


来自 Servlet 规范 SRV.8.3 节:

RequestDispatcher接口的include方法可以随时调用。 include方法的目标servlet可以访问请求的各个方面 对象,但它对响应对象的使用比较有限。

它只能将信息写入ServletOutputStream或Writer中 响应对象并通过在末尾写入内容来提交响应 响应缓冲区,或者通过显式调用的flushBuffer方法 ServletResponse 接口。

它无法设置标头或调用任何影响的方法 响应的标头。任何这样做的尝试 必须被忽略.

如何在请求范围内设置调用 servlet 的值request.setAttribute(...)然后你回来后就从那里读它?那行得通吗?

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

Servlet 包含 Tomcat 中的 HTTP 标头 的相关文章

随机推荐

  • 以编程方式添加 TabBarController

    我想以编程方式制作标签栏控制器和导航控制器 到目前为止 我的代码有效 它在底部显示了一个选项卡栏 但 OptionViewController 在第二个选项卡栏的按钮上没有说任何内容 没有标题 有趣的是 当我单击没有任何内容的按钮时 标题出
  • 使用 JNA 列出所有导出的符号名称

    如何使用 JNA 列出给定 dll 中的所有可用函数名称 JNA 允许您在运行时调用这些函数 要查看可用的内容 请使用适合该工作的工具 在 Windows 上 您有 转储箱 出口 http msdn microsoft com en us
  • R 将 data.frame 转换为 json

    我正在尝试将 data frame 转换为 json 格式 我的 data frame 具有以下结构 a lt rep c Mario Luigi each 3 b lt sample 34 57 size length a df lt d
  • jinja2.exceptions.TemplateNotFound:index.html

    我尝试使用 Flask 打开 index html run py from app import app app run debug True init py from flask import Flask app Flask name f
  • Graphviz:除了标签之外,还在节点上添加标题

    在我的 Graphviz 图中 用 DOT 编写 我希望每个节点都有一个标签 但除此之外 我还希望某些节点有一个小标题 表示该节点的一些其他唯一值 例如 如果这是一个历史图 则节点的标签可能类似于 乔治 华盛顿的诞生 标题可能为 另请参阅
  • 如何在多个端口上运行 FastAPI 应用程序?

    我有一个 FastAPI 应用程序 正在使用 Uvicorn 以编程方式在端口 30000 上运行 现在我也想在端口 8443 上运行相同的应用程序 相同的应用程序需要在这两个端口上运行 我怎样才能在Python代码中做到这一点 最小可重现
  • 如何使用链接本地 IPv6 地址访问 Web 服务器或网站?

    以下是托管 Web 服务器的计算机的 ipconfig 输出 以太网适配器本地连接 连接特定的 DNS 后缀 链路本地 IPv6 地址 fe80 f85b 4256 ee76 24a4 11 IPv4 地址 10 213 254 119 子
  • 为什么我不能执行 fmt.Sprintf("%d.%d.%d.%d", a...)?

    我正在学习 Go 但我一直坚持 Go 之旅 exercise stringer go https tour golang org methods 7 https tour golang org methods 7 这是一些代码 type I
  • 某些事务传播不适用于 Spring/Hibernate 4

    我正在将应用程序从 3 3 升级到 Hibernate 4 2 我们还使用 Spring 3 1 3 目前我们不能 不会更新 我的一些单元测试现在失败了 org hibernate HibernateException No Session
  • 如何简化 Swift Enum 自定义 init

    我创建了一个带有字符串类型的枚举 它有两个 init 方法 一种是使用 rawValue 的默认 init 方法 另一种是使用 intValue 的自定义 init 方法 我是这样写的 有没有什么简单的方法可以不使用两个开关盒 enum R
  • 如何在 VC++ 项目中引用 DLL

    我有一个正在尝试编译的 C 驱动程序 它的代码中有这一行 import msado15 dll no namespace rename EOF EndOfFile 但是当我编译项目时 出现错误 错误1致命错误C1083 无法打开类型库文件
  • 如何设置 TeamCity NuGet 安装程序的 MSBuild 版本?

    我正在尝试使用以下命令恢复 NET Core 解决方案的 NuGet 包NuGet 安装程序 https confluence jetbrains com display TCD10 NuGet InstallerTeamCity 构建步骤
  • 多重继承中使用delete操作符时谁调用类的析构函数

    这个问题听起来可能太愚蠢了 但是 我在其他地方找不到具体的答案 对后期绑定如何工作以及继承中使用的 virtual 关键字知之甚少 如代码示例中所示 在继承的情况下 当使用指向在堆上创建的派生类对象的基类指针和删除运算符来释放内存时 将仅按
  • Powershell脚本运行带有参数的exe文件

    我需要脚本来运行带参数的 exe 文件 我就是这么写的 请问有更好的方法吗 Command Networkpath Restart exe Parms t 21600 m 360 r f Prms Parms Split Command P
  • 如何编写三元运算符(又名 if)表达式而不重复自己

    例如 这样的事情 var value someArray indexOf 3 1 someArray indexOf 3 0 有更好的写法吗 再说一遍 我并不是在寻求上述问题的答案 只是一个在三元运算符表达式中可能重复操作数的示例 就我个人
  • 使用 grep 查找两个字符之间的字符串

    我发现了这一点answer https stackoverflow com a 1454936 2068595用于查找两个字符之间的字符串的正则表达式 就我而言 我想找到之间的每一个模式 and 这是正则表达式 lt 确实 当我尝试它时它有
  • DrawerLayout 第一次打开有点步骤

    我有一个 DrawerLayout 当我第一次滑动它时 它是逐步出现的 比如滞后或类似的东西 但之后它移动得很好 我不知道要发布什么代码 因为正如我所说 它工作正常 只是第一次打开它时 它打开不顺利 这是我的布局
  • 在隐藏字段中创建 has_many 关联

    说用户 has many Things 在用户表单中 我想要一个隐藏字段 它可以让我在这个新用户和预先存在的事物 例如 id 8 之间创建关系 以下代码片段有什么问题 我想我只是忘记了一些语法 对于后代 如果您有多个 事物 值需要以数组形式
  • 选择特定值之后的项目

    说这是我的sql SELECT title author ISBN FROM bs books ORDER BY ISBN LIMIT 3 它只是从某个表中选择所有内容 标题 作者等 假设我想选择某个标题后面的所有项目 而不是按字母顺序或其
  • Servlet 包含 Tomcat 中的 HTTP 标头

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