標籤:
Cookie; Session; URL重寫;
cookie在J2EE項目中的使用,Java中把Cookie封裝成了java.servlet.http.Cookie類。每個Cookie都是該Cookie類的對象。伺服器通過操作Cookie類對象,對用戶端Cookie進行操作。通過request.getCookies()擷取用戶端提交的所有Cookie(以Cookie[]數組形式返回),通過response.addCookie(Cookiecookie)向用戶端設定Cookie。Cookie對象使用key-value屬性對的形式儲存使用者狀態,一個Cookie對象儲存一個屬性對,一個request或者response同時使用多個Cookie。cookie的不可跨網域名稱性和cookie的有效期間。
// 伺服器端擷取cookieCookie[]cookies = request.getCookies();for (int i = 0; cookies != null && i < cookies.length;i++) { Cookiecookie = cookies[i]; if("username".equals(cookie.getName())) { } }
//伺服器端設定cookie
String username = "sa";
Cookie usernameCookie = new Cookie("username", username);
response.addCookie(usernameCookie);
Session是伺服器端使用的一種記錄用戶端狀態的機制,使用上比Cookie簡單一些,相應的也增加了伺服器的儲存壓力。Session是另一種記錄用戶端狀態的機制,不同的是Cookie儲存在用戶端瀏覽器中,而Session儲存在伺服器上。用戶端瀏覽器訪問伺服器的時候,伺服器把用戶端資訊以某種形式記錄在伺服器上。這就是Session。用戶端瀏覽器再次訪問時只需要從該Session中查詢該客戶的狀態就可以了。如果說Cookie機制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那麼Session機制就是通過檢查伺服器上的“客戶明細表”來確認客戶身份。Session相當於程式在伺服器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。Session儲存在伺服器端。為了獲得更高的存取速度,伺服器一般把Session放在記憶體裡。每個使用者都會有一個獨立的Session。如果Session內容過於複雜,當大量客戶訪問伺服器時可能會導致記憶體溢出。因此,Session裡的資訊應該盡量精簡。Session在使用者第一次訪問伺服器的時候自動建立。需要注意的是,只有訪問JSP、Servlet等程式時才會建立Session,只訪問HTML、IMAGE等靜態資源並不會建立Session。如果尚未產生Session,也可以使用request.getSession(true)強制產生Session。Session產生後,只要使用者繼續訪問,伺服器就會更新Session的最後訪問時間,並維護該Session。使用者每訪問伺服器一次,無論是否讀寫Session,伺服器都認為該使用者的Session“活躍(active)”了一次。
// 伺服器端擷取session HttpSessionsession = request.getSession(); Stringusername = (String)session.getAttribute("username");// 伺服器端設定session HttpSessionsession = request.getSession(); session.setAttribute("username","sa");
java session cookie的使用