http协议无状态性
当提交请求,服务器返回响应。但当同一用户同一浏览器再次提交请求,服务器并不知道与刚才的请求是同一用户浏览器发起。
保存用户状态的两大机制
Session-保存在服务器端
Cookie-保存在客户端
Cookie
保存在用户端的文本信息。
使用场景:
1、判断用户是否已登录,n天内保存登录状态。
2、“购物车”处理。
3、保存浏览记录。
缺点:容易泄露用户信息。
创建与使用
Cookie c = new Cookie(String key,Object value); //创建
response.addCookie(c); //存储在客户端
Cookie[] cs = request.getCookies(); //从请求中获取
常用方法:
setMaxAge(int n) 设置有效期,单位s
setValue(String name) 设置cookie的值(创建后)
getName() 获取名称
getValue() 获取值
getMaxAge() 获取有效期
- 附:编码和解码(解决中文乱码问题)
URLEncoder.encode(value,"utf-8"); //编码
URLDecoder.decode(value,"utf-8"); //解码
Cookie与Session对比
- Session:
服务器端
保存的是Object
随会话结束而销毁
保存重要信息 - Cookie:
客户端
保存的是String
长期保存
不重要信息
保存大小有限