JavaWeb【七、JSP状态管理】

时间:2022-03-25 13:38:45

http协议无状态性

当提交请求,服务器返回响应。但当同一用户同一浏览器再次提交请求,服务器并不知道与刚才的请求是同一用户浏览器发起。

保存用户状态的两大机制

Session-保存在服务器端
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
    长期保存
    不重要信息
    保存大小有限