需要在Servlet响应上有条件地设置HTTP标头

时间:2010-12-07 22:27:52

标签: java servlets java-ee servlet-filters

我想根据响应类型设置HTTP标头。我的问题是,在我设置我的标题之前,有些响应会提交标题。有关如何处理此事的任何建议吗?

1 个答案:

答案 0 :(得分:1)

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

另一个是为servlet提供响应包装器,以防止实际提交实际响应。这可能需要在内存中缓冲响应主体。

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


  

我是否必须通过向包装器提供自己的输出流来缓冲整个响应?我可以覆盖flush()或类似的东西吗?

由您决定如何实施它。约束是响应包装器对象必须以某种方式安排在响应主体的写入开始之前添加特殊标头。概念上简单的方法是缓冲响应体,但您也可以获得响应包装器以提供输出流/写入器,在第一次刷新之前将标头添加到实际响应输出流/写入器。

  

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

是的,它可以做到,但你需要查看整个webapp以确定这是否重要。

从性能角度来看,最好的解决方案是让servlet设置头文件。