什么是会话?
指用户开一个浏览器,访问一个网站,只要不关闭浏览器,不管该用户点击多少个超链接,访问多少个资源,直到用户关闭浏览器,整个这个过程我们称之为以此会话。
简述:
① Cookie 是保存在客户端浏览器中
② Cookie 是在服务器端创建的
③ Cookie 的生命周期可以设置,如果不设置,则浏览器关闭,就会消亡
④ Cookie 可以被多个浏览器共享,前提是保证浏览器能够找到这个 Cookie 文件
⑤ Cookie 类似于一张表,保存 KEY VALUE.如果出现相同 KEY,会把值覆盖,类似于 Map
⑥ 一个 Web 应用,可以保存多个 Cookie。
⑦ 一个 Web 应用,只有一个 Cookie 文件,文件可以存放多个 Cookie
⑧ 如果一个 Cookie 到期了,则会删除单个 Cookie,而不是删除这个 Cookie 文件,除非最后一个 Cookie 到期
⑨ 在 cookie 失效的时间内,若访问这个 cookie,不会重置失效的时间(session 可以重置)
Cookie 技术:
设置 Cookie:
// ① 创建 Cookie 对象
Cookie cookie = new Cookie (String name,String val);
// ② 设置存活时间,如果不设置,代表关闭浏览器 cookie 就失效
cookie.setMaxAge(s);
// ③ 发送给客户端
response.addCookie(cookie);
HTTP 请求截图 ↓
HTTP 响应截图 ↓
接收 Cookie:
之前已经设置了 cookie,当访问此 WEB 应用下的其他资源,不管使不使用 cookie,只要本地浏览器有此 cookie 文件,就会通过请求发送给服务器。
接收 Cookie:
Cookie cookies[] = request.getCookies();
// 逐个遍历数组
for(int i=0;i<cookies.length;i++){
String name = cookies[i].getName();
String age = cookies[i].getValue();
}
Cookie 对中文的处理:
// 发送
String name = java.net.URLEncoder.encode("李", "utf-8");
Cookie cookie = new Cookie("name",name);
cookie.setMaxAge(3600);
response.addCookie(cookie);
// 接收
Cookie cookies[] = request.getCookies();
String name = cookies[0].getValue();
name = java.net.URLDecoder.decode(name, "utf-8");
简单流程图:
不同浏览器存储的 cookie 文件位置不同,所以不能跨浏览器访问 cookie
Cookie 的限制:
一个浏览器最多存放 300 个 Cookie
一个 Web 站点最多放 20 个 Cookie,每个 Cookie 大小限制在 4K