2010-12-07 91 views
1

我想根据响应的类型设置HTTP标头。我的问题是有些响应在我设置我的地址之前提交它们的标题。有关如何处理此问题的任何建议?需要在Servlet响应中有条件地设置HTTP标头

+2

功能需求尚不清楚,所以这里只是一个相关问题的链接,更清楚地说明了功能需求:http://stackoverflow.com/questions/2563344/how-to-add-response-headers-based- on-content-type-getting-content-type-before-th – BalusC 2010-12-07 22:32:02

回答

1

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

另一个问题是向servlet提供一个响应包装器,用于防止实际响应实际提交。这可能需要缓冲内存中的响应主体。

但我认为最好的办法就是修改servlets,让他们设置所需的头文件。


我有缓冲通过提供我自己的OutputStream到包装整个响应?我可以覆盖flush()或类似的东西吗?

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

我担心的缓冲导致性能问题

是的,以及它可以做,但你需要看整个web应用程序,以确定这是否是显著。

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

+0

你的第二种方法是我需要采取的。我只想根据某些条件更改/添加标头,我不知道哪个servlet完成了。也不在一个地方,所以3也出。我是否需要通过向包装提供自己的输出流来缓冲整个响应?我可以覆盖flush()或类似的东西吗?我很担心导致性能问题的缓冲 – treefrog 2012-11-07 06:49:19