0

调用后,我试图在响应对象中设置标头

chain.doFilter()

但是,标题没有设置。调用chain.doFilter() 后,控制权是否会返回到doFilter() 方法?

4

2 回答 2

1

但是,标题没有设置。

如果响应已经提交(阅读:当响应的第一部分(包括所有标头)已经发送到客户端时;这是一个不归路),则可能会发生这种情况。有点理智的 servletcontainer 会IllegalStateException在任何尝试在已提交的响应上设置标头时抛出异常。这应该在服务器日志中可见。你读过它们吗?


调用chain.doFilter() 后,控制权是否会返回到doFilter() 方法?

您可以通过放置断点或 sysout/logger 行轻松地自行检查。但是,是的,控件肯定会以通常的 Java 方式返回,并且将执行剩余的行,前提是doFilter()调用没有未捕获的异常。


回到您的具体功能要求,您需要重写代码,以便在提交响应之前设置标头。由于没有以任何方式详细说明具体的功能要求,因此无法在此答案中给出一些提示或启动示例。最直接的方法是在调用之前doFilter()设置标题。

于 2012-10-17T18:40:57.230 回答
0

请求过滤器可以:

  • 执行安全检查
  • 重新格式化请求标头或正文
  • 审计或日志请求

响应过滤器可以:

  • 压缩响应流
  • 附加或更改响应流
  • 完全创建不同的响应
于 2015-07-03T07:03:01.557 回答