码迷,mamicode.com
首页 > 其他好文 > 详细

会话技术基础学习

时间:2020-11-01 09:38:37      阅读:16      评论:0      收藏:0      [点我收藏+]

标签:ESS   登陆   硬盘   方法   失效   原理   set   request   setpath   

会话技术

  • 会话:一次会话中包含多次请求和响应
    • 一次会话:浏览器第一次给服务器资源发送请求,会话建立。直到一方断开为止
  • 功能:在一次会话的范围内多次请求间,共享数据
  • 方式:
    • 客户端会话技术:Cookie,数据存放在客户端
    • 服务器端会话技术:Session,数据存放在服务器
  • 概念:客户端会话技术,将数据保存到客户端
  • 快速入门:
    • 使用步骤:

      • 创建Cookie对象,绑定数据
        • new Cookie(String name,String value)
      • 发送Cookie对象
        • response.addCookie(Cookie cookie)
      • 获取Cookie,得到数据
        • Cookie[] request.getCookies()
    • 实现原理

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

        技术图片

    • cookie的细节

      • 多次发送:

        • 创建多个Cookie,使用response多次调用addCookie方法发送即可
      • cookie在浏览器中保存时间:

      • 默认情况下:浏览器关闭cookie数据被销毁

      • 持久化存储:setMaxAge(int seconds)

        • 正数:将cookie数据写道硬盘的文件中,持久化存储,second代表cookie存活时间

        • 负数:默认值

        • 零:删除cookie信息

      • cookie在Tomcat8之后可以存储中文信息,在Tomcat8之前cookie中不能直接存储中文数据,需要将中文数据转码

    • cookie获取的范围:多个web项目之间默认不能共享cookie

      • setPath(String path):设置cookie的获取范围,默认情况下设置当前目录,如果在同一服务器下需要在多个web项目间共享数据设置:setPath("/")
      • 不同Tomcat服务器间的cookie共享问题:setDomain(String path)如果设置一级域名相同那么多个服务器之间cookie可以共享 例如setDomain(".baidu.com")则在百度的多个服务器间可以共享数据
    • cookie的特点合作用

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

Session

  • 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象Httpsession中

  • 快速入门:

    • 获取session对象:

      • HttpSession session = request.getSession();
  • 使用session对象的方法:

    session.setAttribute("name","value");
    session.removeAttribute("name");
    session.getAttribute();
    
    • session的实现依赖于cookie

      技术图片

  • 细节:

    • 当客户端关闭后,服务器不关闭,两次获取的session是同一个吗?

      • 默认不相同,非一次会话,且基于cookie,第二次访问时cookie已经销毁,不带有session信息

      • 如需要相同可更改所对应的session存活时间

        Cookie cookie = new Cookie("JSESSIONID",session.getId());
        cookie.setMaxAge(TIME);
        response.addCookie(cookie);
        
    • 客户端不关闭,服务器关闭,两次获取的session是同一个吗?

      • 不是同一个,但是需要确保数据不丢失
        • session的钝化:在服务器正常关闭前,将session对象系列化在硬盘上
        • session的活化:在服务器启动后,将session文件转化入内存
        • Tomcat可以自动钝化,活化,idea中操作不能
    • session销毁

      • 服务器关闭
      • session对象调用invalidate()
      • session默认失效时间30分钟
      • 可在web.xml文件中修改存活时间
    • session的特点

      • 存储一次会话多次请求的数据,存放于服务器
      • session可以存放任意类型,任意大小的数据

会话技术基础学习

标签:ESS   登陆   硬盘   方法   失效   原理   set   request   setpath   

原文地址:https://www.cnblogs.com/kmchen/p/13905154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!