web开发中的Cookie笔记

[url]http://www.hetaoblog.com/myblogs/post/web-cookie-notes.jhtml[/url]

最近越来越有种感觉,很多技术以前也写代码去用,当时看的时候也觉得已经有所了解了,但是时间长了再有需要,发现再要写,还是得花点时间去看细节,api等; 但是如果这事我在博客上写过一遍了,一般就记得比较清楚; 同时找出来再实现也非常快;
昨晚在实现hourlog的cookie功能就是这个情况,早上起来趁女儿没醒赶紧写一下cookie笔记;

1. Cookie基本概念
由服务端生成,发送给浏览器,浏览器会将cookie的内容保存在本地;同时,以后浏览器发送http请求的时候,如果符合一定的条件,就会将cookie的内容也包含在http请求中;
主要的条件是看域名,过期时间,路径;
cookie的目的是为了保存和客户相关的一些信息,使得服务端不用通过再次验证就可以确认当前请求具体属于哪个用户;
比如做记住登录功能,就可以写一个cookie然后不需要输入用户名和密码就可以登录;
当然,这里不是把密码写在客户端;
2. java中的cookie
J2EE里面的Cookie类主要的属性有domain,name, value,path,maxage; 其中domain就对应域名,path对应路径,maxage对应过期时间

3. 在程序中生成cookie

我给hourlog生成cookie的代码大意如下;
其中cookiestr使用当前用户名+当前时间+随机数的方式生成;
最后调用response.addCookie将这个cookie返回给浏览器,浏览器会将这个值保存;
同时,我将生成的这个cookiestr保存在用户表里面


Cookie c = new Cookie("__hetaoblog_uid", cookiestr);

c.setDomain("www.hetaoblog.com");

c.setMaxAge(60 * 60 * 24 * 365);

c.setPath(contextpath + "/tool/hourlog/index.jhtml");

response.addCookie(c);



4. 验证cookie
下次请求过来,如果是www.hetaoblog.com这个域名下,路径是/tool/hourlog/index.jhtml的时候,
浏览器就会发送名字叫__hetaoblog_uid的cookie,他的值是一个字符串;
服务端通过request.getCookies()得到所有的cookie,然后遍历一遍,取到名字是__hetaoblog_uid的cookie,
然后去数据库里面根据cookie值看看有没有这个用户,如果有的话就表示这个是记住密码的用户,不需要再次登录了,直接返回这个用户的界面;


if(null != request.getCookies())

{

for(Cookie c: request.getCookies())

{

if(Const.HETAOBLOG_COOKIE.equalsIgnoreCase(c.getName()))

{

String cookie = c.getValue();

UserDao userDao = new UserDao();

sinaUser = userDao.getSinaUserWithCookie(cookie);

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值