调用chain.doFilter()后的Invisible HeaderFilter

时间:2014-05-08 15:36:33

标签: java servlet-filters

我有一个包含简单HeaderFilter的{​​{1}},我想将其添加到servlet的html中。

当我在String chain.doFilter(req, resp)方法中调用HeaderFilter时,提到的文字是不可见的,我认为它可能会以某种方式被覆盖?但是,当我不调用doFilter()时,文本是可见的,但其余的不是。

有什么问题?


这是我在chain.doFilter(req, resp)课程中的代码:

HeaderFilter

不确定我是否应该发布任何其他代码?

1 个答案:

答案 0 :(得分:0)

如果您阅读filter essentials,则会写:

  

修改响应标头和数据。你这样做是通过提供一个   定制版的回复。

  

修改响应的过滤器通常必须捕获​​响应   在它返回客户端之前。这样做的方法是通过   生成响应的servlet是一个替代流。替身   stream阻止servlet关闭原始响应流   当它完成并允许过滤器修改servlet   响应。

所以解释很简单:

当您不调用过滤器链中的下一个项目时,您的代码将被编写并返回给浏览器。但是当你将控制传递给下一个过滤器时,它将被替换。

要实现您的效果,您需要:

  1. 调用过滤器链
  2. 抓取对StringBuilder的最终回复
  3. 找到HTML表格标记的位置
  4. 插入您的HTML代码
  5. 编写修改后的回复
  6. 请参阅链接文档以获取代码示例。