Session:
  1. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象HttpSession中。
  2. 快速入门:
    1. 获取HttpSession对象:
      HttpSession session = request.getSession();
    2. 使用HttpSession对象:
      Object getAttribute(String name)
      void setAttribute(String name, Object value)
      void removeAttribute(String name)

  3. 原理:
    * Session的实现是依赖于Cookie的。

      1.第一次通过request.getSession()获取session对象时,因为这时没有cookie,所以会在内存中创建一个新的session对象;

      2.新创建的session对象会有一个id,这时服务器响应客户端时会将该id=*****加入到响应头set-cookie中,一并传给客户端;

      3.当客户端再次请求服务器时,会在请求头的cookie中将session的id再次传给服务器,服务器会根据该id通过  request.getSession()找到内存中之前创建的session对象。

  4. 细节:
    1. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
      * 默认情况下:不是。
      * 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
         Cookie c = new Cookie("JSESSIONID",session.getId());
         c.setMaxAge(60*60);
         response.addCookie(c);

    2. 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
        * 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作
         * session的钝化:(对象序列化的过程)
            * 在服务器正常关闭之前,将session对象系列化到硬盘上
         * session的活化:(对象反序列化的过程)
            * 在服务器启动后,将session文件转化为内存中的session对象即可。

      (注意:当项目部署在tomcat服务器的webapps中时,服务器关闭时session对象会被序列化到work文件夹的对应项目中,当重启服务器,work文件夹里的session文件会被活化之前的session对象继续使用,然后该文件会自动删除; 当项目部署在本地idea中时,服务器关闭,session对象会被序列化在本地idea的work目录下,但重启之后,work目录会被整体删除,所以之前的session文件不能活化为之前的session对象继续使用)


    
3. session什么时候被销毁?
       1. 服务器关闭
       2. session对象调用invalidate() 。
       3. session默认失效时间 30分钟

         选择性配置修改
            <session-config>
            <session-timeout>30</session-timeout>
            </session-config>

  5. session的特点:
     1. session用于存储一次会话的多次请求的数据,存在服务器端
     2. session可以存储任意类型,任意大小的数据

   * session与Cookie的区别:
     1. session存储数据在服务器端,Cookie在客户端
     2. session没有数据大小限制,Cookie有
     3. session数据安全,Cookie相对于不安全

session知识点小结的更多相关文章

  1. C++重要知识点小结---3

    C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...

  2. C++重要知识点小结---2

    C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继 ...

  3. React及Nextjs相关知识点小结

    React及Nextjs知识点小结 函数式组件和类组件区别是什么 1.函数式组件是用于创建无状态的组件,组件不会被实例化,无法访问this中的对象,无法访问生命周期方法,是无副作用的,相比于类组件函数 ...

  4. 【SpringBoot MQ 系列】RabbitMq 核心知识点小结

    [MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 ...

  5. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

  6. disruptor笔记之四:事件消费知识点小结

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. Session知识点

    知识点概要    - Session    - CSRF    - Model操作    - Form验证(ModelForm)    - 中间件    - 缓存    - 信号 内容详细: 1. S ...

  8. promise知识点小结

    断断续续学习es6也有一段时间了,趁着开学空闲对知识点做一些小结. 为什么使用promise 谈到Promise,我们知道,这是社区较理想的异步编程解决方案.想要掌握promise,我们首先要知道其提 ...

  9. shell知识点小结

    目录 引言 shell中的数组 数组的定义 数组的使用 实际的例子 shell中大小的比较 shell中的括号 shell中函数的定义 杂项知识点 字符串转数组 常用判断标志 linux后台运行相关 ...

随机推荐

  1. lombok常用注解@Data@AllArgsConstructor@NoArgsConstructor@Builder@Accessors

    原贴:https://blog.csdn.net/ChenXvYuan_001/article/details/84961992 https://blog.csdn.net/weixin_382293 ...

  2. 24-ESP8266 SDK开发基础入门篇--Android TCP客户端.控制 Wi-Fi输出PWM的占空比,调节LED亮度

    https://www.cnblogs.com/yangfengwu/p/11204436.html 刚才有人说需要点鸡汤.... 我想想哈;我还没问关于哪方面的鸡汤呢!!! 我所一直走的路线 第一: ...

  3. BZOJ4241 历史研究 【回滚莫队】

    题目描述:给出一个长度为\(n\)的数组,每次询问区间 \([l,r]\),求 \(\max\limits_{x}x*cnt_x\),其中 \(cnt_x\) 表示 \(x\) 在区间 \([l,r] ...

  4. 【luoguP2371】 [国家集训队]墨墨的等式

    题目链接 考虑将所有的\(a_1x_1+a_2x_2+--+a_nx_n=B\)对\(a_1\)取模,那么所有可达到的B就分为了\(0\)~\(a_1-1\)类 如果对\(a_1\)取模为\(k\)的 ...

  5. uni-app 模拟器

    1.安装MuMu模拟器 Android模拟器端口: 7555 2.安装夜神模拟器 Android模拟器端口: 62001

  6. el-table里面的列需要对比两个返回参数

    需求是这样的--- 已发布时间超过30分钟,显示黄色,超过一个钟显示红色 现在后台返回的时间的格式是2018-10-22 11:23:23的格式 做法是: 第一步: 先将后台返回的格式转化为时间戳,然 ...

  7. centos7最小化安装准备工作

    1.配置网络 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16780032 HWADDR=00:0C:29:48:9 ...

  8. MacBook Air在macOS Mojave和macOS Seirra系统下使用Loopback在OBS Studio推流时输出系统软件声音

    转载请标注原地址:https://www.cnblogs.com/lixiaojing/p/11440533.html 运行环境: Loopback破解版获取: https://pan.baidu.c ...

  9. JSP的工作原理

    jsp的本质就是一个servlet,jsp在第一次被访问时会被Web容器翻译成servlet index.jsp -> index_jsp.java -> 编译成index_jsp.cla ...

  10. .NET Core Startup启动类

    .NET Framework 早期架构 在.NET Core面世之前,也就是.NET Framework时代,我们的软件架架构有一些比较通用的架构.抛开我们的业务组件,在我们的系统中我们总会有一些基础 ...