cookie详解

Cookie

1.什么是cookie?

Cookie是一小段文本信息。客户端请求服务器,如果服务器需要记录该用户状态,通过调用HttpServletResponse,向客户端浏览器颁发一个Cookie。客户端浏览器就会将浏览器保存起来,

当客户端再次请求时,客户端就会连同cookie一起提交给服务器,服务器就可以根据该cookie,得到用户的状态。当然服务器此时也可以修改该cookie。

流程图为:

当然:cookie功能并不是每一个浏览器都支持的,有些浏览器是禁止使用cookie功能的。

2.Cookie的获取和设置

Java中有一个专门的java.servlet.http.cookie类,可以通过操作该类来惊醒cookie的获取和设置。Cookie可以通过,request.getCookei();来获取。获得的是一个cookie数组。同时也可以通过response.addCookie(cookie)想客户端浏览器设置cookie.

 

3.cookie不可跨域名。

Cookie的域名设置方法为cookie.setDomain(domain);比如设置的域名为domain=www.baidu.com.这种情况下,设置的域名只能在www.baidu.com中使用,其他域名是无法获取到www.baidu.com下的域名。

www.baidu.com和wsx.www.baidu.com不是同一个域名。

 

4.设置cookie的属性

Cookie的主要属性有cookiename,cookievalue,domain,maxAge,path.

其中cookiename和cookieValue在cookie中以K,V的形式存在,domain为域名。

maxAge为cookie的存在时间。Path若设置为(”/”)为本域名下的该服务器度可以访问该cookie.假如设置为(”/xxx/”)则只有contenPath为/xxx/的路径才可以访问。

 

5.cookie的有效期,修改和删除。

5.1有效期

Cookie有效期的设置方法为:Cookie.setMaxAge(maxAge);

maxAge设置的时间即为cookie的有效期。一般以秒为单位。

比如设置的时间为60,那么cookie的有效期为60秒。不随浏览器的关闭而消失。

加入关闭浏览器又重新打开,那么此时若还没有到60秒,这个时候可以获取该cookie。

 

加入maxAge设置-1此时cookie的有效期随浏览器的关闭而清除

 

5.2修改

通过方法重新设置一次cookie,就是cookie的修改。但是除了cookievalue,和maxage其它配置不能修改,否则,cookie为不同的cookie。

Response.addCookie(cookie);

 

5.3cookie的删除

将cookie的有效期设置为0.

 

6.cookie的安全属性

设置cookie时,将cooKie的Secure属性设置为true;

通过将设置cookie的setSecure(true);

 


7.cookie的使用

public CookieUtil{
     

private HttpServletRequest request;

public CookieUtil(HttpServletRequest request) {
this.request = request;
}

/**
* 获取某个 cookie 名称

* @param name
* @return
*/
public Cookie getValue(String name) {
if (request != null) {
Cookie[] cookies = request.getCookies();
if (cookies != null) { // cookies 有可能为空,须判断
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())) {
return cookie;
}
}
}
}
return null;

/**
* 获取 Cookie 值。

* @param cookieName
*            Cookie 名称。
* @return 返回 cookie 名称下的 cookie 值,如果无则返回 null。
*/
public String getCookieValue(String cookieName) {
String value = null;
Cookie cookie = getValue(cookieName);
if (cookie != null)
value = cookie.getValue();
return value;
}


/**
* 写入cookie

* @param response
* @param cookieName
* @param cookieValue
* @param maxAge
*            生命周期(秒数)
*/
public static void write(HttpServletResponse response, String cookieName, String cookieValue, int maxAge, String domain) {
if (response == null || StringUtil.isEmpty(cookieName))
return;


try {
Cookie cookie = new Cookie(cookieName, cookieValue);
cookie.setPath("/");
if (!StringUtil.isEmpty(domain))
cookie.setDomain(domain);

cookie.setMaxAge(maxAge);                     //当cookie.setMaxAge(-1)时,为浏览器关闭则,cookie失效。

                                                                                                //maxAge = 60 = 一分钟,60*60 = 一个小时。

response.addCookie(cookie);
} catch (Exception e) {
LogUtil.writeLog(e);
}

}

}

cookie和session详解参考资料。

http://blog.csdn.net/fangaoxin/article/details/6952954

http://blog.sina.com.cn/s/blog_670b6d880101deff.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值