<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()的这一设置,否则将一直保存在硬盘上,直至超出有效期或被人工清除。