session 的工作原理?

1、什么是 session

session 是浏览器和服务器会话过程中,服务器分配的一块储存空间。服务器默认为浏览器在cookie中设置 sessionid,浏览器在向服务器请求过程中传输 cookie 包含 sessionid ,服务器根据 sessionid 获取出会话中存储的信息。

由于 http 协议是无状态的,即 http 请求一次连接一次,数据传输完毕,连接就断开了,下次访问需要重新连接。

通过 cookie 中的 sessionid 字段和服务器端的 session 关联,可以确定会话的身份信息。

2、session 比 cookie 更安全

用户信息可以通过加密存储到 cookie,但是这样做的安全性很差,浏览器的 cookie 的容易被其他程序获取和篡改。使用 session 的意义在于 session 存储在服务器,相对安全性更高。

3、session 的生命周期

  • 创建

浏览器访问服务器的 servlet(jsp)时,服务器会自动创建 session,并把 sessionid 通过 cookie 返回到浏览器。

servlet 规范中,通过 request.getSession(true)  可以强制创建 session。

  • 销毁

服务器会默认给 session 一个过期时间,即从该 session 的会话在有效时间内没有再被访问就会被设置过超时,需要重新建立会话。

如 tomcat 的默认会话超时时间为30分钟。

会话超时时间是可以通过配置文件设置,如修改 web.xml 、server.xml 文件

1、web.xml 文件<session-config><session-timeout>30</session-timeout>
</session-config>2、server.xml 文件<Context path="/demo" docBase="/demo" defaultSessionTimeOut="3600"
isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true"   isWorkDirPersistent="false"/>

调用 servlet api 手动设置 session 超时时间

request.getSession().setMaxInactiveInterval(60 * 30);//session 30分钟失效

调用 servlet api 手动销毁 session

request.getSession().invalidate();

4、注意事项

  • 如果浏览器禁用 cookie,默认情况下 session 无法生效。可以通过url重载携带 sessionid 参数、把 sessionid 设置为 http 协议 header 设为其他自定义字段中,请求中始终携带。
  • 当用户量很大、 session 的失效时间很长,需要注意 session 的查找和存储对服务器性能的影响。
  • web 容器可以设置 session 的钝化(从内存持久化到文件) 和 活化(从文件读到内存),提高性能。

【Java面试题与答案】整理推荐

  • 基础与语法
  • 集合
  • 网络编程
  • 并发编程
  • Web
  • 安全
  • 设计模式
  • 框架
  • 算法与数据结构
  • 异常
  • 文件解析与生成
  • Linux
  • MySQL
  • Oracle
  • Redis
  • Dubbo

session 的工作原理?相关推荐

  1. java session原理_java web开发—session的工作原理总结

    session的工作原理总结 一.什么是session session是一次浏览器和服务器交互的会话,在jsp中,作为一个内置对象存在.我的理解,就是当用户打开网页时,程序会在浏览器中开辟一段空间来存 ...

  2. session的工作原理[择]

    session的工作原理 一.术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是 ...

  3. java中session的作用_java中session的工作原理是什么?和Cookies有何区别?

    现在大家学习的东西和以前大不相同了,越来越多的人倾向于去学习高新技术以获得更好的发展.java是很多人的第一选择.java中的知识还是很多的,今天就来为大家介绍一下. 首先来说一下java中sessi ...

  4. HTTP Session 的工作原理以及几个思维扩展

    大家都知道,HTTP 协议本身是无状态的,Session 的出现解决了这个问题,也被大多数 Web 端采用. 但它背后的实现原理你是否有兴趣了解呢,以及在它基础上的思维发散,和你聊聊. 无状态的 HT ...

  5. Session的工作原理

    session是服务器端的一个集合,可以存储任何东西.session最重要的特性,是可以识别客户. 1.Session的工作原理 当我们的Servlet需要使用Session时,执行下面的代码 Htt ...

  6. 会话(cookie的使用,路径和Session的工作原理,使用)

    1.状态管理----Cookie 1.1 为什么需要状态管理 HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了. 如果用户发来一个新的请 ...

  7. PHP中session的工作原理

    一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理 今天在这里做一下梳理 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1. ...

  8. session的工作原理【转】

    一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理,今天在这里做一下梳理. 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1 ...

  9. PHP session的工作原理

    PHP SESSION原理 我们知道,session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据.HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联 ...

  10. session 的工作原理以及使用细节和url编码

    /**********************************************模拟页面************************************************* ...

最新文章

  1. 生成学习算法Generative Learning algorithms
  2. NodeJS开发环境配置
  3. Struts2_2_第一Struts2应用
  4. LeetCode 2065. 最大化一张图中的路径价值(DFS)
  5. Android 系统(230)---OTA 软件包工具
  6. tasker运行java_Tasker 打开桌面快捷方式(以微信公众号为例)[No Root]
  7. 网管学习日记-STP
  8. 二阶高通有源滤波器设计与仿真测试
  9. Python鼠标拖动曲线(matplotlib)
  10. ansiblea基本使用
  11. v-for on stateful component root element because it renders multiple elements
  12. APP微信支付的后台实现
  13. 英语学习经验分享(四六级、竞赛、口语)
  14. JavaWeb专栏之(一):什么是JavaWeb?
  15. python实数绝对值的计算循环操作_Python复数属性和方法运算操作示例
  16. BBQ 回退使用实例
  17. GSM Communication on EBox4300--(1)
  18. Arduino Uno R3 communication
  19. 国家计算机网络工程师考试,计算机四级网络工程师考试内容了解一下!
  20. 用python的opencv库打开ip摄像头

热门文章

  1. 小程序订阅消息(服务通知)实现 wx.requestSubscribeMessage
  2. oracle优化技巧
  3. MySQL 8.0.19安装教程(windows 64位)
  4. Android聊天软件的开发
  5. 物联数采网关在电力能效管理系统中的应用
  6. 六轴传感器MPU6050
  7. 解决扫码枪中文输入法冲突问题
  8. 《Efficient Android Threading》Chapter 3---Threads on Android (Android中的线程)
  9. c语言对fpga编程,利用C语言对FPGA计算解决方案进行编程方法介绍
  10. MacBook快捷键