會話跟蹤,其原理是什么。
我們都知道,為了在WEB服務器中識別發出請求的用戶,對于每一個訪問者WEB服
務器都會給其創建一個session。在會話的創建于使用中,比較容易犯錯誤的地
方主要是當我們需要讀取出保存在session的數據時,沒有轉化為相應的格式,
導致程序出錯。比如:
HttpSession session=request.getSession();
|\\\\\\\\\\
注意Session在為進行HttpSession session=request.getSession();之前
out.println(request.getSession());
HttpSession hs=request.getSession();
out.println(hs);
兩者執行的結果相同;
第一個是獲得Tomcat內置的默認Session (就是會話建立時自動生成的Session唯一標記本次會話)
第二次 是把 唯一的標識Session 通過request.getSession()獲取內存地址 給hs 然后hs
會獲取Session 然后對其操作 其實本質上是對本次會話的唯一Session進行操作.
\\\\\\\\\\\\\\
String MyName="Hello Accp";
session.setAttribute("name",MyName);
String name=seeeion.getAttribute("name");//錯誤的
String name=(String)seeeion.getAttribute("name");//正確的
由于WEB服務器為用戶創建的Session會占用系統內存,所以通常服務器都需要及
時的刪除Session信息以釋放資源,方法有:
①關閉瀏覽器,關閉Session。
②調用HttpSession的invalidate()方法,刪除HttpSession對象和數據。
③兩次訪問時間間隔大于Session定義的非活動時間。
在Servlet中的HttpRequestServlet對象創建HttpSession對象有兩種方法:
①HttpSession session=request.getSession(boolean value);
②HttpSession session=request.getSession();
第一中方法中,布爾值為true時,如果存在于當前請求相關聯的會話,就返回該
會話,否則就返回一個新會話。反之,布爾值為false時,如果存在當前請求相
關聯的會話,就返回該會話,否則就返回null。
第二種方法與第一種方法的第一種情況相同。通常我們都喜歡使用第二種方法。
posted on 2011-10-16 21:29
Tomas 閱讀(237)
評論(0) 編輯 收藏