cookie与session
1、A:什么是cookie?
什么是一次会话?
一个session就是用户的一次会话
更加表面的含义就是用户从打开一个网站的网页开始,频繁操作这个网页,然后我关闭这个网页,然后关闭浏览器
从打开浏览器开始访问网页开始,到关闭浏览器之间这个过程就叫做用户的一次会话过程
用户一次会话中的用户数据可以保存在客户端也可以保存在服务器端,
如果保存在客户端就叫做cookie
如果保存在服务器端就叫做session
在一次用户会话过程中,用户操作页面产生的数据就叫做用户数据
eg:
打开京东网站,把某些物品加入购物车,则在首页的购物车中就可以看到这些加入购物车的商品
这些用户数据(加入购物车的商品)如果保存在客户端就叫做保存在cookie
如果这些数据保存在服务器端,则就叫做session
B:cookie保存信息方式
在cookie中,所有的信息都是以name和value的名值对的方式保存的
C:cookie的保存方式
1、默认是保存在浏览器的缓存的(这种方式只要浏览器一关闭就会消失)
2、可以把cookie保存在本地硬盘,这样的保存方式就可以实现再次打开浏览器,可以从cookie获取信息,进行展示
如果想把cookie保存在本地硬盘前提是需要给这个cookie设定有效时间
D:cookie保存的信息是和某个网站绑定
cookie是和某个访问路径绑定
E:cookie是在服务器端创建的,但是是在客户端保存、
F:cookie在编程中是一个Cookie类
可以在服务器端的servlet中创建cookie对象
Cookie是属于http协议编程,不是JavaEE标准
cookie在服务器端创建,如何发送给浏览器的?
1、使用Cookie类创建cookie对象
(只有一个构造函数,需要名值对)
2、如果想让cookie能够保存在客户端硬盘
请设置cookie的有效时间
(如果不设置有效时间,则cookie也会发送给浏览器,但是只会保存在浏览器缓存)
3、创建好的cookie会以响应头的方式发送给客户端
Set-Cookie: name=aaa; Expires=Mon, 11-Jul-2016 06:41:10 GMT
Set-Cookie 名称
name=aaa; Expires=Mon, 11-Jul-2016 06:41:10 GMT 包括了两个名值对
客户端接收到服务器端发送的cookie后,会把它自动保存在本地硬盘
保存位置:
ie-internet选项-删除临时文件的(设置按钮)-查看文件
C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files
cookie的访问是和某个url绑定
cookie如何从客户端发送给服务器端
使用请求头发送
Cookie: name=aaa 使用请求头把cookie发送到服务器端
注意:只有和这个cookie绑定的url 请求资源才会发送cookie到服务器端
cookie对象和绑定的url关系
eg:
cookie和127.0.0.1/pro-servlet-16/绑定
则使用客户端访问127.0.0.1/pro-servlet-16/xx等资源时,都会发送cookie到服务器端
手动指定cookie对象和某个url绑定
eg:
在服务器端设定cookie对象和127.0.0.1/pro-servlet-16/aaa绑定
则第二次访问时如果输入127.0.0.1/pro-servlet-16/ 根本就不能再从客户端发送cookie给服务器端
G:如何从服务器端获取客户端发送的cookie,并解析cookie
在服务器端代码中从request对象中获取cookies
Cookie[] cookies = request.getCookies();
可以迭代这个cookie数组,利用cookie的名称来获取其值
for(Cookie cookie:cookies){
//如果某个cookie对象的名称是name,则获取其值
if("name".equals(cookie.getName())){
System.out.println("value:"+cookie.getValue());
}
}
H:cookie的生命周期(从创建到死亡的过程)
1、cookie是在服务器端被创建的
2、cookie被创建后使用响应头发送给客户端
如果在创建cookie时设定了有效时间,则客户端会把cookie保存在硬盘(有效期到期 cookie清理)
如果在创建cookie时没有设定有效时间,则客户端会把cookie保存在ie缓存中(浏览器关闭,缓存清理,cookie消失)
同时这个cookie和本应用的uri绑定
3、从客户端再次访问这个应用的某个资源时,
则浏览器会根据访问的uri找是否存在对应的cookie
如果存在,则使用请求头把客户端硬盘对应这个uri的cookie发送给服务器端
4、在服务器端可以使用request对象接收,并迭代处理这个cookie