首页 > 代码库 > 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,就可以实现每个用户的会话跟踪。