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.本回答被网友采纳
相似回答