转载自:http://www.cnblogs.com/youngjoy/p/3247870.html
<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()的这一设置,否则将一直保存在硬盘上,直至超出有效期或被人工清除。