http协议无状态性
无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求。但是当同一个浏览器再次发送请求给服务器时,服务器并不知道它就是刚才那个浏览器。简单的说,就是服务器不会去记得你,所以就是无状态协议。
Cookie
保存用户的状态的两大机制
- Session
- Cookie
Cookie:是Web服务器保存在客户端的一系列文本信息。
典型应用:判定用户是否已经登录网站。”购物车”的处理。
作用:
- 对特定对象的追踪
- 保存用户网页浏览记录与习惯
- 简化登录
安全风险:泄露用户隐私
Jsp中创建与使用Cookie
创建Cookie对象
Cookie newCookie = new Cookie(String key,Object value);
写入Cookie对象
response.addCookie(Cookie newCookie);
读取Cookie对象
Cookie[] cookies = request.getCookies();
Cookie的常用方法:
方法 | 作用 |
---|---|
void setMaxAge(int expiry) | 设置cookie的有效期,以秒为单位 |
void setValue(String value) | 在cookie创建后,对cookie进行赋值 |
String getName() | 获取cookie的名称 |
String getValue | 获取cookie的值 |
int getMaxAge() | 获取cookie的有效时间,以秒为单位 |
Cookie中文存取问题以及Cookie应用用户登录案例
保存中文cookie时需要编码,否则会出现错误
使用URLEncoder.encode(需要处理的字符串,编码);
如URLEncoder.encode(username,"utf-8");
接收时需要用request.setCharacterEncoding("utf-8")
这样处理后读取 cookie时需要解码
使用URLDecoder.decode(需要处理的字符串,编码);
如URLDecoder.decode(cookie.getValue(),"utf-8");
Cookie案例视频
Session与Cookie对比#
Session | Cookie |
---|---|
在服务器端保存用户信息 | 在客户端保存用户信息 |
session中保存的是Object类型 | cookie保存的是String类型 |
随会话的结束而将其存储的数据销毁 | cookie可以长期保存在客户端 |
保存重要的信息 | 保存不重要的用户信息 |