java - 需要根据 Servlet 响应有条件地设置 HTTP header

标签 java servlets jakarta-ee servlet-filters

我想根据响应类型设置 HTTP header 。我的问题是,一些回复在我设置我的标题之前就提交了它们的标题。关于如何处理这个问题有什么建议吗?

最佳答案

一个想法是在调用 Servlet 之前在过滤器的响应对象中设置响应 header 。

另一种方法是为 servlet 提供一个响应包装器,以防止实际提交真正的响应。这可能需要在内存中缓冲响应正文。

但我认为最好的方法是修改 servlet,以便它们设置所需的 header 。

<小时/>

Do I HAVE to buffer the entire response by providing my own outputstream to the wrapper ? Can I overwrite flush() or something like that ?

如何实现取决于您。限制是响应包装对象必须以某种方式安排在开始写入响应主体之前添加特殊 header 。概念上简单的方法是缓冲响应主体,但您也可以让响应包装器提供一个输出流/写入器,在第一次刷新之前将 header 添加到真正的响应输出流/写入器。

I am worried about buffering causing performance issues

是的,确实可以,不过您需要查看整个网络应用程序来确定这是否重要。

从性能角度来看,最好的解决方案是让 servlet 自己设置 header 。

关于java - 需要根据 Servlet 响应有条件地设置 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382285/

相关文章:

Java程序,用于监控我使用J2EE制作的网站

java - 如何将变量设置为编辑文本框

java - 更快地插入到 oracle

java - 检测 java 字符串对象大小给出了错误的结果

java - 使用 Java 清除控制台

javascript - 如何从 jQuery 的 $.ajax() 函数调用 servlet

java - 基于 SOAP 的 Web 服务中的身份验证和角色 (Java)

java - GWT RemoteServiceServlet 请求滞后;没有反应

java - jsp servlet表单获取复选框/选择表达式语言的值

Java应用程序设计建议: storing image