session 的工作原理

在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与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 文件     30 
     
     2、server.xml 文件 

    调用 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 的钝化(从内存持久化到文件) 和 活化(从文件读到内存),提高性能。

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-12-24

session:计算机术语

第2个回答  2020-05-13
简单!
这个是状态保持三大对象之一!
原意是会话,会议的意思!
就是你打开浏览器到关闭浏览器
这期间称为一个会话,也就是一个session,
它是保存在服务器端的.
每当客户端请求页面时,服务器就会自动分配一个ID
来唯一标识这个用户!
所以
这个ID
就是
在客户端和服务器端的连接!
但是一般不要用session来保存大量的数据,因为这样占用服务器端的资源!
希望能够帮助你!
第3个回答  推荐于2018-03-04
TTP协议是无状态的,即信息无法通过HTTP协议本身进传递。为了跟踪用户的操作状态,ASP应用SESSION对象。JSP使用一个叫HttpSession的对象实现同样的功能。HTTPSession 是一个建立在cookies 和URL-rewriting上的高质量的界面。Session的信息保存在服务器端,Session的id保存在客户机的cookie中。事实上,在许多服务器上,如果浏览器支持的话它们就使用cookies,但是如果不支持或废除了的话就自动转化为URL-rewriting,session自动为每个流程提供了方便地存储信息的方法。

Session一般在服务器上设置了一个30分钟的过期时间,当客户停止活动后自动失效。Session 中保存和检索的信息不能是基本数据类型如 int, double等,而必须是java的相应的对象,如Integer, Double.本回答被网友采纳

session是什么意思
Session是一种机制,用于在一段时间内保持服务器与客户端之间的通信状态。当用户访问一个网站时,服务器会为该用户创建一个唯一的Session,以便跟踪和识别用户的活动。Session可以存储用户的偏好设置、浏览历史、购物车内容等信息。2. 工作原理:当用户通过浏览器访问网站时,服务器会生成一个唯一的Session ...

session简介
Session的工作原理如下:1. 首次启用Session时,一个唯一的标识会被存储于客户端的本地cookie中。2. 然后通过调用session_start()函数,PHP从session仓库中加载已经存储的session变量。3. 执行PHP脚本时,使用session_register()函数注册session变量。4. 当PHP脚本执行结束时,未被销毁的session变量会被自动...

session的工作原理
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,...

session、cookie、token工作原理及区别
Session是通过服务器存储用户信息的机制。当用户首次访问,服务器生成一个session ID,存入服务器,并通过cookie将ID发送给客户端。再次请求时,客户端带着cookie中的ID,服务器根据ID找到并管理用户状态。Cookie则存储在客户端,当服务器需要跟踪用户状态时,会发送一个cookie给客户端,包含用户信息。客户端...

session是什么
在Session中,可以存储用户的登录状态、购物车信息、浏览记录等,这些信息在整个会话期间都是可用的。三、Session的工作原理 当用户第一次访问服务器时,服务器会为该用户创建一个新的Session,并分配一个唯一的Session ID。这个Session ID会被存储在用户的浏览器中,通常是通过cookie来实现的。在后续的...

JWT和Session傻傻分不清(到底用什么呢?)
一、Session 工作原理:用户通过用户名密码验证后,服务器生成身份认证数据并保存在内存或数据库中。同时,将session_id返回给客户端,客户端在后续请求中携带session_id,服务器根据此ID验证登录状态与权限。优势:主动清除session更安全,兼容性好。弊端:跨域表现不佳,分布式部署时需解决session同步问题,...

java session 是什么意思?
Java session的工作原理 Java session机制的工作原理十分简单。当客户端第一次向服务器端发送请求时,服务器端会创建一个session对象,并将这个session的相关信息保存到Cookie或URL中,以便在下一次客户端请求时进行识别。当客户端再次访问服务器时,服务器就能够根据session信息识别出客户端身份,并获取相关的...

如何获取SessionID
session的工作原理:1、当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。2、首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。3、当执行PHP脚本时,通过使用session_register()函数注册session变量。4、当PHP脚本执行结束时,未被销毁的session变量会被自动...

sessionID是怎么在客户端和服务器端传递的
session的工作原理如下,即为sessionid在客户端和浏览器端的交互:当浏览器A去访问一个有打开了session机制的php1文件时,session文件会创建,同时会将该session文件的id以cookie的形式 发送给浏览器(session文件的id号可以session_id()这个函数来获得)。当浏览器A没有关闭(会话没有结束),反而去访问...

详解Session
Session的工作原理依赖于一个PHPSESSID的cookie,通过sessionID与服务器上的session文件关联。sessionID在HTTP请求和响应中传输,生成时确保唯一性和随机性。默认情况下,Session文件存储在服务器硬盘,通过session.save_path设置路径,可以自定义存储方式,如使用Redis存储以提高性能,减少I\/O操作。例如,可以...

相似回答