1.cookie
(1)什么是cookie
①是一种客户端的状态管理技术。
②当浏览器访问服务器的时候,服务器可以将少量数据以set-cookie消息头的方式发送给浏览器,浏览器会将这些数据保存下来;当浏览器再次访问服务器时,会将之前保存的这些数据以cookie消息头的方式发送给服务器。
(2)创建一个cookie
//name:cookie的名称,value:cookie的值
Cookie c = new Cookie(String name,String value);
response.addCookie(c);
(3)查询cookie
//如果没有任何cookie,返回null
Cookie[] cookies = request.getCookies();
String cookie.getName()//返回cookie的名称
String cookie.getValue()//返回cookie的值
(4)编码
cookie的值或者名称只允许出现合法的ASCII字符串,如果是中文,需要将中文转换成ASCII字符串
String URLEncoder.encode(String str,String code);//编码
String URLDecoder.decode(String str,String code);//解码
(5)cookie的生存时间
默认情况下,浏览器会将cookie保存在内存空间中,只要浏览器不关闭,cookie一直存在
cookie.setMaxAge(int seconds)
当seconds>0时,浏览器会将cookie保存到硬盘上,当cookie保存的时间超过seconds时,浏览器会将cookie删除
当seconds<0时,缺省值,浏览器会将cookie保存在内盘中
当seconds=0时,删除cookie,比如要删除名称为userid的cookie,
Cookie c = new Cookie("userid","");
c.setMaxAge(0);
response.addCookie(c);
(6)cookie的路径问题
a,路径问题是指:浏览器在向服务器上的某个地址发请求时,会比较请求地址与cookie的路径是否匹配,只有匹配的cookie才会发送。
b,cookie有一个默认的路径,值等于创建该cookie的组件的路径,比如,/web06/app01/addCookie.jsp,则该cookie的默认路径是"/web06/app01".
c,匹配规则
只有当访问的地址是cookie的路径或者是子路径时,浏览器才会将cookie进行发送。
比如:cookie的路径时“”web06/app01“”
则访问:/web06/app01/findcookie.jsp---OK
/web06/app01/sub/findcookie.jsp---OK
/web06/findcookie.jsp----error
d.可以调用cookie.setPath(String path)来修改默认的路径,一般会设置cookie.setPath("/appname");
/appname可以用<%=request.getContextPath()%>
(7)cookie的限制
a,cookie可以被用户禁止
b,cookie不安全,因为cookie保存在浏览器端,对于敏感的数据,需要加密处理。
c,cookie只能保存少量的数据(大约是4k左右)
d,cookie的个数也有限制(大约300个左右)
e,cookie只能保存字符串