日期:2014-05-16  浏览次数:20452 次

js/jsp操作cookie的方法

最近项目用到了自动登录功能,使用到了cookie。

一、cookie简介??? 浏览器与WEB服务器之间是使用HTTP协议进行通信的;而HTTP协议是无状态协议。也就是说,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,???? 它是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。???? 它是服务器发送给浏览器的体积很小的纯文本信息。???? 定义:cookie是Web浏览器存储的少量命名数据,它与某个特定的网页和网站关联在一起。???? cookie实际上和某一网站和网页关联的,保存用户一定信息的文本文件。

二、cookie的属性???? 除名字与值外,每个cookie有四个可选属性:???? 1.expires:指定cookie的生存期。默认情况下cookie是暂时的,浏览器关闭就失效。???? 2.path:它指定了与cookie关联在一起的网页。默认是在和当前网页同一目录的网页中有效。???????? 如果把path设置为"/",那么它对该网站的所有网页都可见了。???? 3.domain:设定cookie有效的域名,???????? 如果把path设置为"/",把domain设为".sohu.com",那么 A.sohu.com和B.sohu.com???????? 的所有网页都能够访问此cookie。???? 4.secure:布尔值,它指定了网络上如何传输cookie。默认情况下,cookie是不安全的,???????? 可以通过一个不安全的,普通的HTTP协议传输;若设置cookie为安全的,那么它将???????? 只在浏览器和服务器通过HTTPS或其它的安全协议连接在一起时才被传输。

三、cookie的操作???? cookie可以用javascipt来操作,也可以用JSP来操作。???? 下面给大家我写的几个例子,相信大家一看就明白了:???? 1.javascript 操作:????
??? <script language="javascript">
??? //设置cookie,cookie有效期时间未GMT时间(距1970年1月1日临时的毫秒)
??? //例如可以设置setCookie("password","12345",(3600000*24*180)),180有效
??? function setCookie (name, value, expires) {?
var expdate = new Date();
expdate.setTime(expdate.getTime() + expires);
document.cookie = name + "=" + escape(value) +
??????? "; expires=" + expires.toGMTString() +? "; path=/";
??? }
????
??? //根据cookie名,取得cookie值
??? function getCookie(name) {??
????? var search;?
????? search = name + "="
????? offset = document.cookie.indexOf(search)
????? if (offset != -1) {
??????? offset += search.length ;
??????? end = document.cookie.indexOf(";", offset) ;
??????? if (end == -1)
????????? end = document.cookie.length;
??????? return unescape(document.cookie.substring(offset, end));
????? }
????? else
??????? return "";
??? }
???
??? //删除某一cookie
??? function deleteCookie(name) {???
????? var expdate = new Date();
????? expdate.setTime(expdate.getTime() - (3600 *24* 1000 * 1));
????? setCookie(name, "", expdate);
??? }
???
??? //检查是否存在此cookie
??? function checkCookie(cookieName,cookieValue){
if (getCookie(cookieName)==cookieValue){
? return true;
}else{
? return false;
}
??? }
??? </script>

??? 2.jsp 操作:???? java中有个Cookie类:javax.servlet.http.Cookie


??? //读取cookie的通用类,以Cookie[] 做参数传个构造函数;
??? package com.test;
??? import javax.servlet.http.*;
/**
* @author sheng_li
*
*/
public class ComCookie {
private Cookie[] cookies;
private Cookie cookie;
public ComCookie(Cookie[] cs){
? cookies = cs;?
}
/**
? * 通过cookieName,取得cookieValue,如果没有此cookie则返回默认值
? * @param cookieName
? * @param defaultValue
? * @return
? */
public String getCookieValue(String cookieName,String defaultValue) {
? for(int i=0; i< cookies.length; i++) {
??? Cookie cookie = cookies[i];
??? if (cookieName.equals(cookie.getName()))
?? return(cookie.getValue());
? }
? return(defaultValue);
}
/**
? * 类方法,通过cookieName,取得cookieValue
? * @param cookies
? * @param cookieName
? * @param defaultValue
? * @return
? */
public static String getCookieValue(Cookie[] cookies,
?????? String cookieName,
?????? String defaultValue) {
? for(int i=0; i < cookies.length; i++) {
??? Cookie cookie = cookies[i];
??? if (cookieName.equals(cookie.getName()))
?? return(cookie.getValue());
? }
? return(defaultValue);
}
}


JSP中:(以下内容来源于网络)

JSP是使用如下的语法格式来创建cookie的:   Cookie cookie_name =new Cookie("Parameter","Value");   例如:Cookie newCookie =new Cookie("username","waynezheng"); response.addCookie(newCookie);   解释:JSP是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字和值来创建Cookie,然后 Cookie可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头,本例中Cooki