Cookie :浏览器端的会话管理技术(只能存储String类型的数据)
关于cookie的细节:
如何创建Cookie对象:服务器创建,将cookie携带回服务器
Cookie c = new Cookie(String key, String value);
addCookie(c);
Session :服务器端的会话管理技术(可以存储任意类型的数据)
依赖于 cookie 存在:JsessionId (记录用户会话信息)
会话技术
程序中的会话:打开浏览器---->访问特定的网站(访问服务器)-----> 关闭浏览器
将浏览器华人服务器之间的产生数据,会话!
服务器端会话技术
浏览器端会话技术:cookie:登录
例如:京东(不登录/登录)----->不登录----->将会话数据保存在cookie(加入购物车)
登录----->服务器(session 中)
应用场景:
打开浏览器-----> 访问网站-----> 填写用户登录数据(会话数据)-----> 校验成功-----> 首页,回显示当前的用户名信息-----> 关闭浏览器-----> 直接打开浏览器-----> 访问同一个网站 -----> 直接显示用户信息
访问商品列表 -----> 点击某一个商品-----> 浏览器关闭 ----->下一次进来-----> 商品列表-----> 记录之前访问过的商品数据(图片等)
Cookie :客户端(浏览器端)的存储技术
- 服务器端创建Cookie,将cookie数据携带给浏览器
public Cookie(String name, String value)(响应头:setCookie:key=value)
- 通过浏览器端将数据存储在缓存区中,(请求头:cookie:key=value)
public void addCookie(Cookie cookie):
将cookie协会浏览器,等待下次将指定 cookie 添加到响应。可以多次调用此方法设置一个以上的 cookie
- 返回包含客户端随此请求一起发送的所有 Cookie 对象的数组
public Cookie[] getCookie():
浏览器再次访问的时候,服务器端就可以获取到cookie数据
Cookie的基本使用:
- 创建Cookie
- 将cookie数据由服务器协会浏览器
- 再次将访问服务器,可以获取cookie数据
获取cookie的名称:getName()
获取cookie的内容:getValue()
cookie的细节:(不适合存储私有数据)
- cookie内容只能存储String类型的数据
- 浏览器端存储cookie的个数有限制:300个,每一个站点可以存储20多个cookie
- 有效期问题:
public setMaxAge(int expiry):cookie 的有效期:默认浏览器关闭时,cookie会话结束!
设置 cookie的最大生存时间,以秒为单位。
参数如果为正整数:超过了当前的值,标识cookie过期了
0:(清空浏览器记录):直接将cookie会话结束
pubilc void setPath(String uri):设置当前cookie的有效路径
如果存在项目名称:由“/项目名称”开始,到“/rem"结束,如果设置了有效路径
cookie的基本使用
package com.bite.cookie.hello;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
<