我正在使用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-type
和ContentType
我的问题:
getContentType()
参数,而无需迭代servletRequest
,headers
和getters?喜欢toString()?attributes
但content-type
为空?答案 0 :(得分:1)
我的回答是在Apache Tomcat(8.5)的上下文中。
是否可以在Header中有一个标题,其getter为空?例如:内容类型存在于标题中,但
getContentType()
是null
?
除非有错误,否则不可能。这些方法查询包含标题的相同内部数据结构。
如何避免在没有时间设置的情况下检索重复的参数?
您要查询相同的数据结构两次 - 所以它非常简单 - 不要再问两次同样的事情。使用标头,或使用HttpServletRequest中的方法。唯一的区别是,当使用这些方法时,您将获得一个默认值(如果Content-Length未知,则为-1),而如果您要求丢失标题,则会获得NULL。
有一种很好的方法可以输出所有ServletRequest参数而无需迭代头,属性和getter?喜欢toString()
至少我不知道这种标准方法。