HttpServletRequest中的标题和getter

时间:2017-02-27 08:33:39

标签: java servlets

我正在使用HttpServletRequest,我必须输出该对象的所有标题和信息。

我正在使用的标头getHeadersNames()

Enumeration<String> headerEnums = servletRequest.getHeaderNames();
while (headerEnums.hasMoreElements()) {  
    String elementName = headerEnums.nextElement();
    String elementValue = servletRequest.getHeader(elementName);
    sb.append("Header.").append(elementName).append("=").append(elementValue).append(", ");
}

之后我使用getter检索所有参数,例如:

sb.append("getAuthType").append("=").append(servletRequest.getAuthType());

我从[{1}}

获取重复参数,例如Header.content-typeContentType

我的问题:

  1. 有一种很好的方法可以输出所有getContentType()参数,而无需迭代servletRequestheaders和getters?喜欢toString()?
  2. 如何避免在没有时间设置的情况下检索重复的参数?
  3. 是否可以在Headers中有一个标题,其getter为空?例如:标题中存在attributescontent-type为空?

1 个答案:

答案 0 :(得分:1)

我的回答是在Apache Tomcat(8.5)的上下文中。

  

是否可以在Header中有一个标题,其getter为空?例如:内容类型存在于标题中,但getContentType()null

除非有错误,否则不可能。这些方法查询包含标题的相同内部数据结构。

  

如何避免在没有时间设置的情况下检索重复的参数?

您要查询相同的数据结构两次 - 所以它非常简单 - 不要再问两次同样的事情。使用标头,或使用HttpServletRequest中的方法。唯一的区别是,当使用这些方法时,您将获得一个默认值(如果Content-Length未知,则为-1),而如果您要求丢失标题,则会获得NULL。

  

有一种很好的方法可以输出所有ServletRequest参数而无需迭代头,属性和getter?喜欢toString()

至少我不知道这种标准方法。