當瀏覽器執行
當瀏覽器執行request.getSession()時,瀏覽器會檢測是否有session存在,如果沒有就創建一個,有就返回當前這個。
request.getSession(false);與上面不同的是,如果有就返回當前這個Session,沒有就返回null。
當session創建時,會向瀏覽器發送一個沒有設置有效時間帶有自己id的cookie。
瀏覽器帶着這個cookie訪問這個網站時,會告訴servlet該去找那個session。由於這個cookie沒有設置有效時間,所以瀏覽器關閉,這個cookie也就死了。
在打開瀏覽器servlet就不知道找那個session了,但是session還是存在的。
所以只需重寫這個cookie就行了。
HttpSession session = request.getSession(); session.setAttribute("user", user); String sessionid = session.getId(); //獲取sessionid Cookie cookie = new Cookie("JSESSIONID", sessionid); //new一個cookie,cookie的名字是JSESSIONID跟帶id的cookie一樣 cookie.setPath(request.getContextPath()); //設置cookie應用范圍。getContextPath是獲取當前項目的名字。 cookie.setMaxAge(60000); //設置有效時間 response.addCookie(cookie);//用這個cookie把帶id的cookie覆蓋掉