cookie

来源:互联网 发布:1hhhh新域名网站 编辑:程序博客网 时间:2024/06/05 08:50
首先http是无连接性质的协议,也就是说,你在请求的瞬间获取连接,返回以后就断开了连接。

假如你登陆了一个购书商城,订了一本书,那么你下次登录的时候应该在你的购书车中应该有这本书才对,于是就有了cookie。你访问一个服务器的时候,它可以记录你做的动作,然后写一个文本给客户端(应该是写到了客户端的本地文件夹中),记住,只能写文本。下次你再次访问的时候,它会将上次的记录从本地读取出来。

但是,有个不好的就是,客户端可以禁止这个行为。所以说呢,基于核心内容的编程,最好别用cookie,万一用户禁止了,就不能保证该内容的正常运行了。

Cookie分为2种,一种是存在于浏览器的内存中,这种就是没有设置生命周期,这种就是一旦你的浏览器被关掉以后,那么这个就没有了,但是如果你开了多个窗口(不是多个Tab),只要没有全部关闭,那么你的cookie仍然是存在的。还有一种就是设置了生命周期,以文本的形式存在的,它会被以文本的形式写到浏览器所在的本地文件路径,直到所设置的生命周期结束,比如说我们常常看到的2个星期之内不用输入密码这种功能,其实就是写了一个cookie到本地,然后生命周期被设置为2个星期。


设置方法就是直接创建Cookie对象,并且赋值。

Cookie cookie = new Cookie(String CookieName, String CookieValue);
response.addCookie(cookie);

但是呢,这时候有一个时间问题需要注意,cookie不可能永远存在于客户端,如果只是简单地这样操作的话,关掉浏览器以后就会消失,再次打开就没有效了。

我记得CSDN的登陆界面就是2周之内自动登陆,也就是说他们其实将用户信息以cookie的形式写到客户端,并且设置了有效时间为2周。怎么实现呢?可以在response.addCookie(cookie);之前加上下面这一句:

cookie.setMaxAge(int millisec);

如果想要是想取出cookie值,比如服务器每次被访问的时候都最好检查一下cookie,看看有没有有用的东西存在那里,这时候就调用Cookie[] cookies = request.getCookies()方法,返回的结果就是一个Cookie类型的数组。

然后可以进行判断,比如

if(cookies != null){
   Cookie cookie;
   for(int i=0;i<cookies.length;i++){
       cookie = cookies[i];
       //然后对每个cookie进行处理,比如cookie.getName(),cookie.getValue(),
       //就能获取cookie里面的值,然后再进行下一步操作。
   }
}


子路径,父路径的问题以后再讨论。。。


原创粉丝点击