<jsp:include flush="true" page="header.jsp" /> <script type="text/javascript"> alert("add cookie"); <% Cookie cookie=null; String cas_user = "no"; if(request.getCookies()!=null) cookie=null; cookie = new Cookie("cas_bbs_sso",cas_user); cookie.setPath("/"); response.addCookie(cookie); %> </script>
在jsp頁面創建cookie,代碼當然很簡單,但是,需要注意一點的是:如果,jsp頁面存在嵌套,則必須把創建cookie的代碼寫在
<jsp:include flush="true" page="header.jsp" />的外面,上面也好,下面也行,但是,每個人的應用都不一樣,樣式也不一樣,有時候,添加在inclue的前面,會造成些頁面的樣式不一樣,我的就出現了這樣的問題,需要注意點。以下引用來自:http://wenson.iteye.com/blog/99098
無論怎樣添加Cookie,在引用Cookie的時候只得到名稱為JSESSIONID,值為一個無序字符串的Cookie,且從客戶端獲得的Cookie數組長度為1,說明手工添加的Cookie並沒有成功保存到客戶端。反復嘗試了N次,在網上查看了很多這方面的帖子,都沒有找到答案。最后終於發現,如果將創建Cookie的語句放在<jsp:include page="includes\head.jsp" flush="true" />(代碼的頭部有這條語句)的下面,Cookie將添加失敗,反之則添加成功。而我們得到的名稱為JSESSIONID實際上服務器端保存在客戶端的SESSION(會話),它的值就是服務器隨機分配的唯一的SESSION-ID,用以保持http連接的有效性。SESSION實際上是以Cookie的形式保存在客戶端的,SESSION和Cookie的不同之處在於,SESSION保存在瀏覽器所用的內存空間中,而Cookie保存在客戶端的硬盤上。頁面的關閉不會釋放SESSION,只有當客戶端的瀏覽器關閉時,SESSION才會被釋放。對於Cookie,它的聲明周期取決與服務器端對Cookie.setMaxAge()的這一設置,否則將一直保存在硬盤上,直至超出有效期或被人工清除。