2017-02-27 18 views
0

我正在使用HttpServletRequest,並且必須輸出該對象的所有頭和信息。HttpServletRequest中的頭和Getters

的頭,我使用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(", "); 
} 

事後我檢索使用干將的所有參數,例如:

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

我從getContentType()了重複的論點例如Header.content-typeContentType我的問題:

  1. 有一個很好的方式輸出所有servletRequest參數不疊代headersattributes和getter?像toString()?
  2. 我如何避免檢索重複的參數沒有時間設置?
  3. 是否有可能在它的getter爲空的頭文件中有頭文件?例如:content-type存在於標題中,但getContentType()爲空?
+0

http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#getParameterMap()將返回所有的請求參數作爲一個地圖。 – ramp

+1

@ramp我很確定OP想要一個返回所有內容的方法 - 查詢參數,頭文件等。 –

+0

@SvetlinZarev,你說得對,因爲這篇文章和代碼都是關於頭文件的。我剛剛回答了這個問題:) – ramp

回答

1

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

是否有可能在其吸氣劑爲空的頭文件中有頭文件?例如:content-type存在於標題中,但getContentType()null

這是不可能的,除非有一個錯誤。這些方法查詢包含頭文件的相同內部數據結構。

我怎樣才能避免檢索重複的參數沒有時間設置?

您正在查詢相同的數據結構兩次 - 所以它非常簡單 - 不要問兩次相同的事情。使用頭文件,或使用HttpServletRequest中的方法。唯一的區別是,使用這些方法時,您將得到一個默認值(如果Content-Length未知,則爲-1),而如果您要求缺少標頭,則會得到NULL。

有一個很好的方式來輸出所有的ServletRequest參數,而不需要迭代頭部,屬性和getter?像toString()

至少我不知道這樣的標準方法。

相關問題