什么是会话
当浏览器发送请求访问服务器,一直到访问浏览器结束,浏览器关闭为止,这期间浏览器和服务器之间产生的所有请求和相应加在一起成为浏览器和服务器的一次会话
一次会话中会产生数据,如何保存会话中产生的数据
(1)已登录的状态下,在一次购物中,将商品信息保存到购物车中,其实就是讲信息保存到数据库中
(2)没有登录的状态下,将商品加入购物车,将商品信息保存到cookie或者session中
可以使用cookie或者session保存会话中的数据
cookie原理及应用
总结
(1)cookie是将会话产生的数据保存在浏览器客户端,是客户端技术
(2)cookie是基于两个头进行工作的:分别是set-cookie相应头和cookie请求头
服务器在相应中给浏览器发送cookie时,是通过set-cookie相应头讲cookie从服务器发送给客户端浏览器,让浏览器保存到内部
而浏览器内部一旦保存了cookie,以后浏览器访问服务器时,都会通过cookie请求头,将cookie信息从浏览器在带回服务器端,服务器端如何需要,可以获取请求中的cookie,从cookie中获取保存的数据,实现某种功能
cookie的API及应用
1.创建cookie对象
Cookie c=new Cookie(String name,String value )
// 创建Cookie的同时需要制定Cookie的名字 以及 cookie中要保存的值(数据)
2.将Cookie添加到response响应中
response.addCookie( Cookie c );
// 将Cookie添加到response响应中, 由服务器负责将cookie信息发送给浏览器, 再由浏览器保存到内部
// 可以多次调用该方法, 添加一个以上的cookie
3.获取请求所有的Cookie对象组成的数组
Cookie[] cs = request.getCookies();
// 获取请求中携带的所有cookie组成的cookie对象数组;
// 如果请求中没有携带任何cookie, 调用该方法会返回null值。
4.删除Cookie
CookieAPI中没有直接删除的方法
代码示例:删除名称为cart的cookie: 可以向浏览器再发送一个同名的cookie(即名称也叫cart),并设置cookie的最大生存时间为零,由于浏览器是根据cookie的名字来区分cookie,如果前后两次向浏览器发送同名的cookie,后发送的cookie会覆盖之前发送的cookie,而后发送的cookie也设置了生存时间为零,因此浏览器收到后也会立即删除!
//创建一个名称为cart的cookie
Cookie c = new Cookie( "cart" , "" );
//设置cookie的最大生存时间为零
c.setMaxAge( 0 );
//将cookie添加到响应中,发送给浏览器
response.addCookie( c );
5.Cookie的常用方法
cookie.getName() //获取cookie的名字
cookie.getValue() //获取cookie中保存的值
cookie.setValue() //设置/修改cookie中保存的值(没有setName方法,因为cookie的名字无法修改)
cookie.setMaxAge() //设置cookie的最大生存时间