情景1:
京东在买东西的时候,只有结帐的时候才会要求必须登录账户
#1.状态管理
##(1)什么是状态管理?
将浏览器与web服务器之间多次交互当做一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来
##(2)如何进行状态管理
方式一:将状态保存在客户端(浏览器端)
cookie技术
方式二:将状态保存在服务器端
session技术
###(3)cookie技术
#### 1)什么是cookie?
服务器临时存放在浏览器端的少量数据
### 2)工作原理
浏览器访问服务器时,服务器会将少量数据以set_cookie消息头的形式发送给浏览器,浏览器将这些数据保存下来;
当浏览器再次访问服务器,会将之前保存的这些数据以cookie消息头的形式发送给服务器
### 3)添加cookie
cookie c = new cookie(string name,string value);
注: name:cookie的名称
value:cookie的值
response.addcookie(c);
### 4)读取cookie
Cookie[ ] request.getCookie();
注:
a.一个Cookie对象封装了一个Cookie的信息(包括了cookie的名称和值)
string cookie.getName()
string cookie.getValue()
b.有可能返回null
### 5)编码问题
a.什么是编码问题
cookie只能保存合法的ascii字符,中文需要转换成合法的ascii字符才可以
b.如何处理?
String URLEncoder.decode(String str,String charset);
String URLDecoder.decode(String str,String charset);
c.建议:
在添加cookie时,对所有的值都统一使用上述方法来进行处理
###6)生存时间
默认情况下,浏览器会将cookie保存在内存里,
只要浏览器不关,则cookie会一直存在,可以调用cookie.setMaxAge方法来设置cookie的生存时间
生存时间:
setMaxAge(int seconds)
注: a.单位是秒
b.值可以
>0 浏览器会将cookie保存在硬盘上,当超过指定的时间,浏览器会将cookie删除
<0 default 缺省值,即浏览器会将cookie保存在内存里面
=0 删除cookie
比如,要删除名称为city的cookie Cookie c =new Cookie("city","");
c.setMaxAge(0)
### 7)cookie的路径问题
a.什么是cookie的路径问题
浏览器在向服务器上的某个地址发送请求时,会比较该地址是否符合cookie的路径的要求,只有符合条件的cookie才会被发送
b.cookie的默认路径
cookie的默认路径等于添加该cookie的web组件的路径
c.匹配规则
比如,cookie的路径是"/day07/abc"
如果访问的是/day07/findCookie1.jsp no
/day07/abc/findCookie2.jsp yes
/day07/abc/sub/findCookie3.jsp yes
即: 请求路径要么等于cookie的路径,要么cookie路径的子路径,则该cookies会被发送
d.修改cookie的路径
cookie.setPath( )
### 8)cookie的限制
a.可以被用户禁止
b.不安全 注: 不要将敏感数据以cookie的方式来保存
c.只能保存少量数据 注:大约是4k
d.cookie的数量也有限制 注:大约几百个
e.cookie只能保存字符串