2010-02-03 29 views
8

我爲我的web圖層使用jsp/Servlets。有沒有任何工具可以檢查Web會話中的會話屬性?任何查看網絡會話屬性的工具?

+1

不太確定你的問題的背景,你能否詳細說明一下?如果您能夠在IDE中調試應用程序,那麼您應該能夠設置斷點並查看會話中的內容。 – 2010-02-03 03:59:45

+0

是的,你是對的。但我想從瀏覽器中檢查。 – 2010-02-05 05:46:31

回答

17

當然。它實際上不是一個工具,而是一個簡單的代碼片段。在您的servlet/jsp /過濾器中添加以下內容:

Session session = request.getSession(); 
Enumeration attributeNames = session.getAttributeNames(); 
while (attributeNames.hasMoreElements()) { 
    String name = attributeNames.nextElement(); 
    String value = session.getAttribute(name); 
    System.out.println(name + "=" + value); 
} 

並且您將在控制檯上打印會話的所有屬性。

另外,在JSP做:

<c:forEach items="${sessionScope}" var="attr"> 
    ${attr.key}=${attr.value}<br> 
</c:forEach> 

這將打印頁面上的會話的所有屬性。

更新:原來你對會話有一個錯誤的理解。會話數據位於服務器端。客戶端只保存一個唯一的標識符,通過該標識符在服務器上引用其數據。這個標識符通常是「會話cookie」,但也可以是url(JSESSIONID)的一部分。所以客戶端不能直接看會話的內容。如果你想讓你的會話屬性顯示有意義的值(不同於他們的哈希碼),則可以重寫它們的toString()方法。

+0

謝謝,這是我終於想出來的解決方案,但沒有一個工具,(如Firefox插件)可以做到這一點? (因爲如果瀏覽器可以清除會話屬性,爲什麼不能顯示它們?) 另外,如果屬性是一個對象,使用這種技術,它將只顯示該對象的哈希碼。 – 2010-02-05 05:39:58

+0

你似乎誤解了會話的概念。看到mu更新 – Bozho 2010-02-05 06:58:01

+0

我知道會話數據在服務器端,但我問的是我們是否可以在服務器端查看沒有代碼的會話變量(如上面給出的代碼)?例如,我們可以查看stackoverflow.com的會話變量嗎? 此外,爲了避免哈希碼是覆蓋toString(),我明白。但我想要的是深入查看其子對象及其子對象... – 2010-02-06 08:00:43