sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。
session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+jvmid;

session存储

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

session创建

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

session超时设置

1.在web容器中设置(以tomcat为例)
在tomcat-7.0\conf\web.xml中设置,以下是tomcat7.0中默认配置:

<session-config>
<session-timeout>30</session-timeout>
</session-config>

tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间

2.在工程的web.xml中设置

<!--时间单位为分钟-->
<session-config>
<session-timeout>15</session-timeout>
</session-config>

3.通过java代码设置
session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效

三种方式优先等级:1 < 2 < 3

这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果在调试程序,应该是修改服务器端时间来测试,而不是客户端

总结

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

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

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

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

session存在哪里?如何实现以及session超时设置相关推荐

  1. php session 超时设置,php如何使用session 超时设置?

    php使用session 超时设置的方法:1.设置[php.ini]配置文件,用[ini_set]函数改变当前上下文环境的属性值:2.设置Session时间戳,代码为[unset($_SESSION[ ...

  2. TongWeb的session超时设置以及不依赖于TongWeb session的场景

    TongWeb 的 session 超时设置按优先级从高到低依次为: 方式一: 在应用代码中设置 session 超时时间 session.setMaxInactiveInterval(60);//单 ...

  3. session过期重新登陆_深入分析Session和Cookie-前端面试题

    在Web发展史中,我们知道浏览器与服务器间采用的是http协议,而这种协议是无状态的,所以这就导致了服务器无法知道是谁在浏览网页,但很明显,一些网页需要知道用户的状态,例如登陆,购物车等. 所以为了解 ...

  4. session在html页面跳转,session跨页面传值为空

    PHP中的SESSION页面间传值的问题 a.php 代码 @session_start(); $_SESSION['username']=$row['username']a.php 代码 跳转 b. ...

  5. spring session通过redis存储,实现session共享

    目录 前言 1 准备工作 1.1 spring框架的jar包 1.2 spring session的相关jar包 2 具体步骤 2.1 创建项目 2.2 spring mvc的配置 2.3 sprin ...

  6. mysql session变量_mysql 系统变量和session变量

    mysql系统变量包括全局变量(global)和会话变量(session),global变量对所有session生效,session变量包括global变量.mysql调优必然会涉及这些系统变量的调整 ...

  7. razor 怎样使用session变量_Nginx负载均衡解决session一致性问题

    [145] 前言: http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你. 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录邮箱后 ...

  8. 试图用Session Administration删除某用户的session时报错

    我今天试图用Session Administration删除某用户的session时报错: Logon failed due to missing access rights. Please chec ...

  9. php session和cookie区别,php中session和cookie的区别是什么?

    一.Session (1)Session的由来以及介绍 Session:在计算机中,尤其是在网络应用中,称为"会话控制",生存时间为用户在浏览某个网站时,从进入网站到关闭这个网站所 ...

最新文章

  1. iOS动画开发----打分 数字滚动刷新动画
  2. 远程桌面中指定在用户登录时启动的程序
  3. QT的QSetIterator类的使用
  4. 逆天Kali带你游遍大江南北~安全之前人铺路!
  5. GM6 pageset - DB get scenario
  6. 【树莓派】在树莓派上制作开机自启动程序及服务2
  7. dijikstra 旅行商问题_车辆路径问题与算法
  8. 【IT职场】任正非十大特质
  9. WinEdit10 添加论文引用,XeLaTex编译后论文中的引用变成了【?】
  10. 动手学深度学习(第六章 循环神经网络)
  11. 香港服务器怎么加速?
  12. WAVE SUMMIT+峰会,飞桨八大亮点发布,全面助力产业智能化
  13. 思维拓展:不相邻问题插空法
  14. 桌面上的计算机图片怎么复制,电脑桌面上怎么截图呢??请问如何在电脑屏幕上截屏?...
  15. 非专业级软件能力认证(CSP-J/S)
  16. 上班族做什么副业赚钱?全面解析副业赚钱模式!
  17. Ubuntu系统查看显卡型号NVIDIA Corporation [10DE:1E82] -display UNCLAIMED
  18. html中,将字符串对象数组转成对象数组
  19. VL31N创建内向交货函数GN_DELIVERY_CREATE及增强字段
  20. linux 随机抽取文件中N行

热门文章

  1. internal/modules/cjs/loader.js:883 throw err; ^ Error: Cannot find module ‘destr‘
  2. 数据库三四级备考经验分享——四级数据库篇
  3. STM32——液晶显示中英文
  4. Bootstrap基本介绍
  5. 荒野求生卡在获取服务器信息,武装突袭3 WasteLand荒野求生服务器教程
  6. echars实现自定义山西省地图和地图下钻返回
  7. 访问github网站出现的问题
  8. VB编程:身份证号码是否合法-49
  9. Sql server 如何得到汉字的声母
  10. 小甲鱼python(2019最新版)学习笔记(P3-P8)