随便点击一个连接

sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。

session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+jvmid

存储在服务器的内存中,tomcat的StandardManager类将session存储在内存中,也可以持久化到file,数据库,memcache,redis等。客户端只保存sessionid到cookie中,而不会保存session,session销毁只能通过invalidate或超时,关掉浏览器并不会关闭session。

那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。

创建:sessionid第一次产生是在直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。

删除:超时;程序调用HttpSession.invalidate();程序关闭;

session存放在哪里:服务器端的内存中。不过session可以通过特殊的方式做持久化管理(memcache,redis)。

session的id是从哪里来的,sessionID是如何使用的:当客户端第一次请求session对象时候,服务器会为客户端创建一个session,并将通过特殊算法算出一个session的ID,用来标识该session对象

session会因为浏览器的关闭而删除吗?

不会,session只会通过上面提到的方式去关闭。

下面是tomcat中session的创建:

ManagerBase是所有session管理工具类的基类,它是一个抽象类,所有具体实现session管理功能的类都要继承这个类,该类有一个受保护的方法,该方法就是创建sessionId值的方法:

tomcat的session的id值生成的机制是一个随机数加时间加上jvm的id值,jvm的id值会根据服务器的硬件信息计算得来,因此不同jvm的id值都是唯一的),

StandardManager类是tomcat容器里默认的session管理实现类,

它会将session的信息存储到web容器所在服务器的内存里

PersistentManagerBase也是继承ManagerBase类,它是所有持久化存储session信息的基类,PersistentManager继承了PersistentManagerBase,但是这个类只是多了一个静态变量和一个getName方法,目前看来意义不大,对于持久化存储session,tomcat还提供了StoreBase的抽象类,它是所有持久化存储session的基类,另外tomcat还给出了文件存储FileStore和数据存储JDBCStore两个实现。

浏览器存储用户登录信息的位置相关推荐

  1. python使用selenium打开chrome浏览器时带用户登录信息

    导读 我们在使用selenium打开google浏览器的时候,默认打开的是一个新的浏览器窗口,而且里面不带有任何的浏览器缓存信息.当我们想要爬取某个网站信息或者做某些操作的时候就需要自己再去模拟登陆 ...

  2. 【安卓】基于SharedPreferences实现用户登录信息的存储

    1. 设计登录页面 比较简单,重要的点就一个,有一个记住密码的按钮. 代码实现 <?xml version="1.0" encoding="utf-8"? ...

  3. 用户修改了信息jwt服务器怎么识别,django使用JWT保存用户登录信息

    什么是JWT? Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站 ...

  4. Day212.OAuth2、微信二维码登入注册功能、用户登录信息前后端供、讲师列表前后端 -谷粒学院

    谷粒学院 OAuth2的使用场景 一.OAuth2解决什么问题 1.OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服务上的资源 2.图例 资源拥有者:照片拥有者 ...

  5. 通过cookie保存并读取用户登录信息

    浏览器将cookie以key/value的形式保存到客户机的某个指定目录 通过cookie的getCookies()方法可获取所有cookie对象的集合 通过cookie对象的getName()方法可 ...

  6. 如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本教程主要介绍如何使用who命令检查用户登录信息. 如 ...

  7. JavaScript之判断用户登录信息

    1.今天来介绍一下如何使用JavaScript脚本语言来判断用户登录信息,在我学struts2时,就有输入校验和拦截器来实现判断用户登录时,输入的用户信息是否完整,输入的用户信息是否符合用户的要求等等 ...

  8. 使用JSP实现简单的登录注册功能,并且使用Session跟踪用户登录信息

    使用JSP实现简单的登录注册功能,并且使用了Session来跟踪用户的登录信息,这个是用纯JSP来实现此功能的,由于没有连接数据库,所以使用List来模拟数据库. 第一步:创建web项目 如果有不会创 ...

  9. 细讲前端设置cookie, 储存用户登录信息

    细讲前端设置cookie 引言 正文 一.设置cookie 二.查看cookie 三.删除cookie 四.封装cookie操作 结束语 引言 我们都知道如果想做一个用户登录并使浏览器保存其登录信息, ...

  10. oracle通过sid远程登录,oracle怎么捕获用户登录信息,如SID,IP地址等

    可以利用登录触发器,如 CREATE OR REPLACE TRIGGER tr_login_record AFTER logon ON DATABASE DECLARE miUserSid NUMB ...

最新文章

  1. springBoot 搭建web项目(前后端分离,附项目源代码地址)
  2. 用git进行项目搭建
  3. keras fine-tune方法
  4. [开发笔记]-DataGridView控件中自定义控件的使用
  5. PHP trim()函数详解
  6. 微软亚洲研究院周明 | 从语言智能到代码智能
  7. oracle dblink性能,谈谈Oracle为2019年埋下的雷:Oracle关于DBLINK的预警
  8. 勒索病毒“WannaCry”之复现过程(永恒之蓝)
  9. 可调稳压电源lm317实验报告_可调直流稳压电源实验报告 -
  10. 今天是星期一,两天后是星期三,5天后是星期六;今天是星期六,3天后是星期二。
  11. 微信小程序发红包 后端代码
  12. 移动端网页录音上传,服务端智能语音识别
  13. bash忽略错误继续执行_shell 执行命令失败则中断执行 类似断言
  14. Remove Element
  15. Obsidian 插件(二):Advanced_Slides 的使用
  16. Java -- 用文本文档写代码
  17. 高等数学考研笔记(八)
  18. 微信小程序百度地图API移动选点
  19. Linux SPI子系统(2):SPI核心层
  20. 提高 Banner 广告点击率的 14 个设计建议

热门文章

  1. emmet工具使用和技巧
  2. 36. 打印数组的主次对角线
  3. 找出数组中的最大值和最小值
  4. zabbix-3.0.3 mysql表分区的方法
  5. (转载)Android开发者必知的开发资源
  6. Sharepoint 2010 对话框框架
  7. asp.net中DataList和Repeater的使用
  8. [UWP]不怎么实用的Shape指南:自定义Shape
  9. idea社区版使用maven运行web项目
  10. 半边数据结构(The_Half-Edge_Data_Structure)