http协议的无状态性
无状态指当浏览器发送请求给服务器时,服务器响应客户端请求。但当同一个浏览器再次发送请求给服务器时,服务器并不知道它就是刚才那个浏览器(无法保存状态)
保存用户状态的两大机制:session和cookie
cookie是web服务器保存在客户端的一系列文本信息,比如判定注册用户是否已登录网站以及最近浏览记录等。典型应用:购物车的处理
cookie可对特定对象进行追踪,保存用户网页浏览记录与习惯,但也容易泄露用户信息
jsp中创建与使用cookie
创建Cookie对象(每一个键值对创建一个cookie对象):
Cookie newCookie = new Cookie(String key,Object value);
写入Cookie对象:
response.addCookie(newCookie);
读取Cookie对象:
Cookie[] cookies = request.getCookies();
常用方法
方法 | 说明 |
---|---|
void setMaxAge(int expiry) | 设置cookie的有效期,单位秒 |
void setValue(String value) | 在cookie创建后对其赋值 |
String getName() | 获取cookie名称 |
String getValue() | 获取cookie的值 |
int getMaxAge() | 获取cookie的有效时间,单位秒 |
注意保存用户名和密码时,如果未选中保存那项,则要清除之前这两项的cookie(遍历cookie if判断之前是否存在)
session和cookie的对比
- 都用于保存用户状态,都会过期
- session保存在服务器端的内存中,而cookie以文本文件的方式存于客户端
- session中保存的是Object类型,cookie保存的是String类型
- session随会话结束将其存储的数据销毁,而cookie可以长期保存在客户端
- session用于保存重要的信息,cookie用于保存不重要的用户信息
- cookie中对保存对象的大小是有限制的