HTTP 协议
Web 通信需要一种语言,就像中国人讲中文,欧美说英文,Web 使用的 HTTP 协议,也叫超文本协议。
使用 HTTP 协议的人分为两类:客户端和服务端。请求资源的角色是客户端,提供资源的是服务端。
HTTP 协议是一个很神奇的东西,他只负责说话,至于说了什么他也不知道。所以 HTTP 是无状态的协议。
会话
HTTP 是没有状态,但是人们是有记忆的,人们想让 HTTP 记住某些东西, 然后就提出几种解决方案:
- 隐藏域表单
- 重写 url
- cookie
- session
cookis 简介
cookie 是小段的文本信息(微型 redis 数据库),大小为 4kb 左右,放在浏览器的内存或者磁盘中,可以设置存活时间,浏览器关闭就消失了。除非保存在磁盘。
cookies 使用场景
- 记住用户名和密码
- 购物车
- 定向广告
发送 cookies
- 创建 cookies
- 设置最大时效
- 将 Cookie 放入到 HTTP 响应报头
Cookie c = new Cookie("userID", "a1234");
c.setMaxAge(60*60*24*7);
response.addCookie(c)
读取 Cookie
String cookieName = "userID";
Cookie[] cookies = request.getCookies();
if(cookies != null){for(Cookie cookie : cookies){if(cookieName.equals(cookie.getName())){doSomethingWith(cookie.getValue());
}
}
}
session
存在服务器内存的文本信息(微型 redis 数据库)
创建 session
HttpSession session = request.getSession;
HttpSession 的 API
pubic Object getAttribute(String name); // 根据 name 获取属性的值
public void setAttriute(String name, Object value); // 设置一个名称和对应的值
public void logout() // 将会话从客户端注销
session 使用场景
- 购物车
- 验证码
cookie 与 session 区别
cookie | session |
---|---|
存在浏览器 | 存在服务端 |
安全系数低 | 较安全 |
参考:
<< servlet 与 jsp 核心编程 >>
<< servlet 和 jsp 学习指南 >>
<< 图解 HTTP >>