会话技术

会话

  • 概念:一次会话中包含多次请求和响应
  • 功能:在一次会话的范围内多次请求间,共享数据
  • 方式:
    • 客户端会话技术:cookies
    • 服务端会话技术:session

Cookie

  • 概念:客户端会话技术,将数据保存到客户端

  • 快速入门:

    1. 使用步骤:
      • 创建cookie对象,绑定数据:Cookie(String name, String value)
      • 发送cookie对象:response.addCookie(Cookie cookie)
      • 获取cookie,拿到数据:Cookie[] request.getCookies()
  • 实现原理

    • 基于响应头set-cookie和请求头cookie实现
  • cookie细节

    1. 一次可不可以发送多个cookie?
      • 可以,创建多个Cookie对象,多次调用addCookie方法即可
    2. cookie在浏览器中保存多长时间?
      • 默认下存在浏览器内存,当浏览器关闭后,cookie被销毁
      • 持久化存储:
        • setMaxAge(int seconds)
          1. 正数:将cookie数据写到硬盘文件中,持久化储存,单位:秒
          2. 负数:默认值
          3. 零:删除Cookie信息
    3. cookie能不能存中文?
      • 在tomcat 8之前,cookie中不能直接存储中文数据
        • 需要将中文数据转码,一般采用URL编码
      • 在tomcat 8之后,cookie支持中文数据
    4. cookie获取范围多大?
      • 在一个tomcat服务器中,部署多个web项目,这些web项目中的cookie能不能共享?
        • 默认情况下cookie不能共享
        • setPath(String path):设置cookie的获取范围,默认情况下,设置当前的虚拟目录
        • 如果要共享,则可以将path设置为"/"
      • 不同的tomcat服务器间cookie共享问题?
        • setDomain(String path):如果设置一级域名相同,那么多个服务器间的cookie可以共享
          • setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com的cookie可以共享
  • Cookie的特点和作用

    1. cookie存储数据在客户端浏览器
    2. 浏览器对于单个cookie的大小有限制(4kb),对同一域名下的总cookie数量也有限制(20个)
    • 作用:
      1. cookie一般用于存储少量不太敏感的数据
      2. 在不登陆的情况下,完成服务器对客户端的身份识别

Session

  • 概念:服务端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务端的对象中,
  • 快速入门:
    • HttpSession对象:
      • request.getSession():获取Session对象
      • Object getAttribute(String name):通过session名获取session
      • void setAttribute(String name,Object value):设置session
      • void removeAttribute(String name):移除session
  • Session的实现是依赖于Cookie
  • Session什么时候被销毁
    1. 服务器关闭
    2. Session对象调用invalidate()
    3. Session默认失效时间30分钟
  • Session的特点
    1. Session用于存储一次会话的多次请求数据,存在服务器端
    2. Session可以存放任意类型,任意大小的数据
    3. SessionCookie的区别
      • Session存储数据在服务端,Cookie在客户端
      • Session没有数据大小限制,Cookie
      • Session数据安全,Cookie相对于不安全
Last modification:September 12th, 2020 at 07:55 pm
如果觉得我的文章对你有用,请随意赞赏