我想遍歷ServletRequest
中的所有可用屬性。但不知何故,當這樣做,並不是所有可用的屬性都顯示出來。這似乎是因爲當請求枚舉中未顯示的特定屬性時,該值將被正確打印。遍歷所有ServletRequest屬性
代碼迭代屬性和用於示出特定屬性
HttpServletRequest request = this.getHttpServletRequest();
Enumeration en = request.getAttributeNames();
while (en.hasMoreElements())
{
Object currentElem = en.nextElement();
System.out.println("currentElem.getClass(): " + currentElem.getClass());
System.out.println("currentElem.toString(): " + currentElem);
}
Object specificAttrValue = request.getAttribute("Shib-Identity-Provider");
System.out.println("\nspecific attr: " + specificAttrValue);
輸出:
currentElem.getClass():類java.lang.String
currentElem.toString():corsFilter。過濾
currentElem.getClass():類java.lang.String
currentElem.toString():org.springframework.web.context.request.RequestContextListener.REQUE ST_ATTRIBUTES
currentElem.getClass():類java.lang.String
currentElem.toString():__spring_security_scpf_applied
currentElem.getClass():類java.lang.String
currentElem.toString():__spring_security_session_mgmt_filter_applied
currentElem .getClass():類java.lang.String
currentElem.toString():org.springframework.security.web.FilterChainProxy.APPLIED
currentElem.getClass():類java.lang.String
currentElem.toString( ):__spring_security_filterSecurityInterceptor_filterApplied
爲什麼迭代不顯示Shib-身份提供商作爲一個可用的屬性?
如何迭代「隱藏」的實際可用屬性?
注:我想訪問的屬性由Shibboleth服務提供商設置。請求首先發送到Apache服務器,然後發送到Shibboleth,然後發送到testshib.org身份提供程序,返回Shibboleth,並根據內容的不同,請求通過一些屬性(這些是我需要訪問的)獲得豐富,然後它被路由到Tomcat servlet。
服務器端錯誤配置'getAttributeNames()'實際上返回'枚舉',使用這將使您的代碼示例更容易閱讀,即不打印屬性名稱類名稱(無論如何它們都是字符串)。 –
我在Javadoc中讀取了返回字符串Enumeration的方法,但是當將該變量聲明爲Enumeration時,編譯器警告說需要對字符串進行未經檢查的轉換。 –
backendev
顯然,Tomcat和Glassfish都會發生這種情況。 Shibboleth名單上的人似乎認爲這是一個錯誤:http://shibboleth.net/pipermail/users/2015-June/022260.html –