本以为Cookie读写有多复杂,今天一研究原来so easy,无论是JavaScript中,还是JSP中,读写Cookie的代码都很固定,以下代码就是这些函数。
(一)浏览器存储路径
1.IE 存放路径:
C:\Documents and Settings\ 你的用户名 \Cookies 文件夹
注:每个 cookie 是一个 txt 文件,文件名是以 “ 用户名 @ 网站 URL” 命名的
缓存路径:
C:\Documents and Settings\ce\Local Settings\Temporary Internet Files
2.FireFox 存放路径:
C:\Documents and Settings\用户名\Application Data\Mozilla\Firefox\Profiles\随机目录,在目录下可以看到一个cookie.sqlite文件(firefox3.X版 本),所有的cookie都是保存在这个文件中。
(二)JavaScript 操纵 cookie 函数
function setCookie(sName, sValue, oExpires, sPath, sDomain, bSecure) {
var sCookie = sName + "=" + encodeURIComponent(sValue);
if (oExpires) {
sCookie += "; expires=" + oExpires.toGMTString();
}
if (sPath) {
sCookie += "; path=" + sPath;
}
if (sDomain) {
sCookie += "; domain=" + sDomain;
}
if (bSecure) {
sCookie += "; secure";
}
document.cookie = sCookie;
}
function getCookie(sName) {
var sRE = "(?:; )?" + sName + "=([^;]*);?";
var oRE = new RegExp(sRE);
if (oRE.test(document.cookie)) {
return decodeURIComponent(RegExp["$1"]);
} else {
return null;
}
}
function deleteCookie(sName, sPath, sDomain) {
var sCookie = sName + "=; expires=" + (new Date(0)).toGMTString();
if (sPath) {
sCookie += "; path=" + sPath;
}
if (sDomain) {
sCookie += "; domain=" + sDomain;
}
document.cookie = sCookie;
}
例子:
setCookie("name", "Nicholas",new Date(2010,8,16),"/JavaScriptDemo");
(三) JSP 操纵 cookie 函数
<%!
//读取Cookie
public static Cookie getCookie(HttpServletRequest request,String name){
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals(name)){
return cookies[i];
}
}
}
return null;
}
%>
<%
Cookie cookie = getCookie(request,"name");
out.write(URLDecoder.decode(cookie.getValue(), "utf-8")); //解码
%>
<%
Cookie nameCookie = new Cookie("name",URLEncoder.encode("中文字符","utf-8"));
nameCookie.setMaxAge(2000);//指定cookie的最大寿命,单位秒。
nameCookie.setDomain(".mysite1.com");//一般不需要设置,除非需要跨域读取cookie值
nameCookie.setPath("/");
response.addCookie(nameCookie);
%>
<%
//清空cookie
Cookie domain = new Cookie("name","");
domain.setDomain(".mysite1.com" );//需要跟客户端Cookie文件中的域名一致
domain.setMaxAge(0);//重点设置cookie过期时间为0秒
domain.setPath("/");;
response.addCookie( domain );
%>
总结:
1. 解决cookie读取乱码问题
//JSP中解决乱码问题
URLEncoder.encode(userinfo,"utf-8") //编码
URLDecoder.decode(cookie.getValue(),"utf-8") //解码
//JavaScript中解决乱码问题
encodeURIComponent(sValue); //编码
decodeURIComponent(sValue); //解码
本文介绍如何使用JavaScript和JSP进行Cookie的基本操作,包括设置、获取和删除Cookie,并提供了示例代码,同时说明了如何解决Cookie读取时可能出现的乱码问题。
5041

被折叠的 条评论
为什么被折叠?



