Java 如何从Servlet 2.3或2.5中的响应中获取头文件

Java 如何从Servlet 2.3或2.5中的响应中获取头文件,java,jakarta-ee,servlets,servlet-filters,servlet-2.5,Java,Jakarta Ee,Servlets,Servlet Filters,Servlet 2.5,我知道v3.0有方法getHeader(),但是2.3呢?也许可以从蒸汽中得到 更新: 实际上,我需要HTTP响应头RESTful应用程序。出于某种原因,我决定在servlet过滤器中执行此操作。。。但是没有成功。。。 解决方案@javax.ws.rs.core.Context HttpHeaders requestHeaders 比如说, @javax.ws.rs.GET public String invoceRestMethod(@Context HttpHeaders requestHe

我知道v3.0有方法
getHeader()
,但是2.3呢?也许可以从蒸汽中得到

更新:

实际上,我需要HTTP响应头RESTful应用程序。出于某种原因,我决定在servlet过滤器中执行此操作。。。但是没有成功。。。 解决方案
@javax.ws.rs.core.Context HttpHeaders requestHeaders

比如说,

@javax.ws.rs.GET
public String invoceRestMethod(@Context HttpHeaders requestHeaders){
      MultivaluedMap<String, String> map = headers.getRequestHeaders();
      for (Map.Entry<String, List<String>> entry : map.entrySet()) {
      //  processing header.... 
      }     
}
@javax.ws.rs.GET
公共字符串invocestmethod(@Context-HttpHeaders-requestHeaders){
多值映射=headers.getRequestHeaders();
对于(Map.Entry:Map.entrySet()){
//正在处理标头。。。。
}     
}

也许你会帮助别人。但在任何情况下,对于Servlet issue仍然是打开的

您无法从流*中获取头文件

您需要做的是在调用Servlet之前将代理响应对象插入到过滤器链中,并让它捕获标题



*实际上,您可以使用代理响应从流中捕获内容并解码头。但是,如果插入代理响应,直接捕获头会更简单。

我猜您谈论的是HttpServletResponseWrapper(HttpServletResponse)。是的,我想到了。但是我怎么知道头球的长度呢?你不需要知道。您可以对包装器进行子类化,覆盖
setHeader
方法来记录您感兴趣的标题。您好,Stephen。我试图刺穿这个。只有在我自己调用Servlet中的方法setHeader的情况下,它才有效。但我需要完整的HTTP头。你知道吗?看看这页上的例子#3:。与此答案相关的示例:如果您在过滤器链的上方添加足够多的过滤器,那么在2.5中应该可以使用。我不知道你说的“我需要完整的HTTP头”是什么意思。