1.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息。无论何时用户链接到服务器,Web 站点都可以访问 Cookie 信息
2.在同一个页面中设置 Cookie,实际上是按从后往前的顺序进行的。如果要先删除一个 Cookie,再写入一个 Cookie,则必须先写写入语句,再写删除语句,否则会出现错误
3.Cookie 必须在 HTML 文件的内容输出之前设置;不同的浏览器 (Netscape Navigator、Internet Explorer) 对 Cookie 的处理不一致,使用时一定要考虑;客户端用户如果设置禁止 Cookie,则 Cookie 不能建立。 并且在客户端,一个浏览器能创建的 Cookie 数量最多为 300 个,并且每个不能超过 4KB,每个 Web 站点能设置的 Cookie 总数不能超过 20 个
4.Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
5.Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。
11.删除一个Cookie
Cookie c=new Cookie("username","");
c.setMaxAge(0);
response.addCookie(c);
当请求一个会话的时候,Servlet容器就创建一个HttpSession对象,有了这个对象,就可以利用这个对象保存客户的状态信息。
Servlet容器为HttpSession对象分配一个唯一的SessionID,将其作为Cookie的一部分(或URL的一部分)发送给浏览器,浏览器在内存中保存这个Cookie。当客户再次发送HTTP请求时,浏览器会将Cookie随请求一起发送,Servlet容器从请求对象中读取SessionID,然后根据SessionID找到对应的HttpSession对象,从而得到客户的状态信息。
URL重写
使用浏览器时,如果禁用Cookie,Web服务器就无法利用Cookie来跟踪用户的会话,就要使用URL重写机制。
URL重写就是在URL中附加标识客户的SessionID。Servlet容器解释URL,取出SessionId,与特定的Session关联。
例如:http://163.com/bbs/index.jsp;jsessionid=1234567
服务器将SessionID作为URL的一部分发送给客户端,客户端在请求URL中再传回来,就可以跟踪用户的会话。
要跟踪客户端会话,需要将所有发往客户端的URL进行编码,可以使用HttpServletResponse接口的encodeURL()方法和encodeRedirectURL()方法来实现。