首页 > 代码库 > javaEE cookie
javaEE cookie
1服务器可以向客户端写内容,只能是文本内容
2客户端可以阻止服务器写入
3服务器只能拿自己webapp写入的东西
4写入的cookie是名值对形式保存数据,在:c:\Documents and Settings\Administrator\Cookies
5记录前后之间的状态,比如你买了一些东西,不记录下来,就不知道这些东西已经买了。cookie记录下后,后面访问
的网页就知道你前面网站选好的东西了。
6记住用户和密码都记录在了cookie里面,采用特殊的算法加密了密码。
7针对http协议的无连接性要求出现的一种保存C/S间状态的机制。
8创建Cookie:new Cookie(name,value)
9可以使用Cookie的setXXX方法来设定一些相应的值
setName(String name)/getName()
setValue(String value)/getValue()
setMaxAge(int age)/getMaxAge()
利用HttpServletResponse的addCookie(Cookie)方法将它设置到客户端
利用HttpServletRequest的getCookie()读取客户端的所有Cookie,返回一个数组
10Cookie分为两种:一种属于窗口/子窗口,一种属于文本。
Cookie cookie = new Cookie("name","value");
response.addCookie(cookie);
//Default maxAge is -1,indicating cookie applies only to current browsing seesing.
//只有当前浏览器可以访问,重新打开的浏览器不能访问。用ctrl+n打开的浏览器窗口也可以访问。cookie = new Cookie("name","value");
cookie.setMaxAge(3600);//设置生存时间,以秒为单位
response.addCookie(cookie);
//如果设置生存周期,它会保存在文本文件中,如果没有设置生存周期或设置为-1,cookie仅保存在内存中。11读取Cookie:Cookie[] cookies = request.getCookies();
Cookie cookie= cookies[i];
cookie.getName();
cookie.getValue();
12一个servlet/jsp设置的cookie能够被同一个路径下面或者子路径下面的servlet/jsp读到(这里的路径=URL,路径不等
于真实的路径)
13Cookie文件的格式为:
Set-Cookie:
NAME=VALUE;//在servlet中,用于会话跟踪的Cookie的名字必须是JSESSIONID
Comment=value;//可选的,允许服务器说明这个Cookie的使用
Domain=value;//可选的,用于指定Cookie在哪一个域中有效,必须以点号.开始
Max-Age=value;//可选的,定义Cookie的生存时间,以秒为单位,如果为0,则立即被丢弃
Path=value;//可选的,用于指定这个Cookie在哪一个URL子集下有效
Secure;//可选的,没有值,指示浏览器使用安全的方式与服务器交互
Version=1*DIGIT//必须的,值是一个十进制的整数
如:Set-Cookie:uid=zhangsan;Max-Age=3600;Domain=.sunxin.org;Path=/bbs;Version=1
上面这个响应报头发送一个名为uid,值为zhangsan的cookie,生存时间是3600秒,在sunxin.org域的/bbs路径下有效当浏览器收到上面这个响应报头后,可以选择接受或者拒绝这个Cookie,如果接受了这个Cookie,当浏览器下一次发
送请求给hhtp://www.sunxin.org/bbs/路径下的资源时同时会发送下面的请求报头:Cookie:uid=zhangsan
服务器从请求报头中得到Cookie,然后通过标识取出在服务器中存储的zhangsan的状态信息,通过为不同的用户发送
不同的Cookie,就可以实现每个用户的会话跟踪。