这是在工作中经常碰到的问题,利用cookie进行数据的交互与传递,在刚刚进入公司的时候还用的很不顺手,大概只知道cookie是一个名值对的形式存在,还要分为浏览器cookie和本地磁盘cookie。导师总是很自然的说了句:“这些都是基本功。”好吧,我承认我的基本功的确很不行,尤其是这次回国了以后很久没看书没有再像原来那样拼命了,很多技术知识点早已抛到了九霄云外去了。曾为一个爷们的我现在怎么像个娘们扭扭捏捏的搞不懂。废话不多说了,开始记录下写入和读取cookie的过程。应用的比较多的就是利用jsp对cookie进行操作,还有利用js对cookie进行操作,利用js操作永远比利用jsp来的麻烦。下面一个个举例,比较简单的几个代码,以后可以继续ctrl+c和ctrl+v的用了。
自己曾写过两个页面用于cookie的判断welcome.jsp页面和newsAdd2.jsp页面。
以下是JSP脚本中对cookie的写入与读取:
在welcome.jsp页面中:
//当进入welcome页面后,将你访问的频道信息记录到cookie中,用于newsAdd2.jsp页面进行当前所在频道的判断
if(null !=
cnum){
Cookie cookie_channel = new Cookie("channelJudge",
String.valueOf(cnum));
cookie_channel.setPath("/");
cookie_channel.setMaxAge(1*24*60*60);
response.addCookie(cookie_channel);
}
在newsAdd2.jsp页面中:
Cookie cookies[]= request.getCookies();
if (null != cookies) {
for (int
i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookie.getName().equals(“channelJudge”)) {
String cookieValue = cookie.getValue();
//……………………
}
}
}
以下是JS中对cookie的写入与读取:
文件1,往磁盘上写入cookie:
<body>
<input type="button" value="cookie"
onclick="test();"/>
</body>
<script
type="text/javascript">
function
test() {
var today = new Date();
var expireDay = new Date();
var msPerMonth = 24 * 60 * 60 * 1000 * 1;
expireDay.setTime(today.getTime() + msPerMonth);
document.cookie = "cookieName=zhang;expires=" +
expireDay.toGMTString();
//document.write("cookie已经写到硬盘上了");
//document.write("内容是:" + document.cookie);
//document.wirte("有效日期是:" + expireDay.toGMTString());
}
</script>
文件2,根据cookie名往磁盘上读取该cookie值:
<body>
<input type="button" value="get cookie value"
onclick="getCookie('cookieName');"/>
</body>
<script
type="text/javascript">
function
getCookie(name)
{
var bikky = document.cookie;
name +=
"=";
var i =
0;
while (i
< bikky.length)
{
var offset = i + name.length;
if (bikky.substring(i, offset) == name)
{
var endstr =
bikky.indexOf(";", offset);
if (endstr
== -1) endstr = bikky.length;
//alert(bikky.substring(offset, endstr));
return (bikky.substring(offset, endstr));
//返回的是string类型
}
i =
bikky.indexOf(" ", i) + 1;
if (i == 0)
break;
}
return
null;
}
</script>
加载中,请稍候......