㈠ 什么是cookie?
浏览器访问web服务器时,服务器会将少量的数据以"set-cookie"消息头的方式发送给浏览器,浏览器会将这些数据保存下来;当浏览器再次访问服务器时,浏览器会将之前保存下来的数据以"cookie"消息头的方式发送给服务器。
㈡ 创建一个cookie
Cookie c = new Cookie(String name,String value);
response.addCookie(c);
name: cookie名称
value: cookie保存的值
㈢ 查询cookie
Cookie[] request.getCookies();
注意:该方法有可能返回null。
String cookie.getName();
String cookie.getValue();
㈣ cookie的编码问题
cookie只能保存合法的ascii字符,如果是中文,需要将其转换成合法的ascii字符。
保存时:
String URLEncoder.encode(String str,String code);
查询时:
String URLDecoder.decode(String str,String code);
㈤ Cookie生存时间
cookie.setMaxAge(int seconds):
① 单位是秒
② seconds的值可以:
>0 浏览器会将cookie保存在硬盘上,当超过设置的时间,浏览器会删除这个cookie。
<0 缺省值,浏览器会将cookie保存在内存,浏览器只要不关闭,cookie就一直存在;浏览器关闭,cookie就会被销毁。
=0 立即删除cookie。
㈥ 删除Cookie
比如,要删除一个名叫"ename"的cookie:
Cookie c = new Cookie("ename","");
c.setMaxAge(0);
response.addCookie(c);
㈦ cookie的路径问题
① 什么是cookie的路径问题?
浏览器在向服务器上的某个地址发请求时,会先比较cookie的路径是否与这个地址匹配,只有匹配的cookie才会发送。
② cookie的默认的路径
cookie的默认路径等于创建这个cookie的组件的路径。
比如:/web07/app01/addCookie.jsp创建了一个cookie,则该cookie的路径等于"/web07/app01"。
③ Cookie路径的匹配规则
要访问的服务器的地址必须是cookie的路径或者其子路径,浏览器才会发送该cookie。
http://localhost:8080/web07/findCookie1.jsp ---- error
http://localhost:8080/web07/app01/findCookie2.jsp ------ ok
http://localhost:8080/web07/app01/sub/findCookie3.jsp -------- ok
④ 修改cookie的路径
cookie.setPath(String path);
比如:cookie.setPath("/web07");
在开发中,经常将cookie的路径设置为应用名。
㈧ 要添加一个cookie
Cookie c = new Cookie("username",URLEncoder.encode("李白","utf-8"));
c.setMaxAge(3600);
c.setPath("/web07");
response.addCookie(c);
㈨ cookie的限制
① 不安全:因为cookie存放在浏览器端,可以很容易被查看到,所以,如果有敏感数据,一定需要加密。
② 可以被禁止:
③ cookie的大小有限制(大约只能存放4k左右的数据)
④ cookie的个数也有限制(浏览器大约只能保存300个左右的cookie)。
⑤ cookie只能保存字符串,并且,需要考虑编码问题。