session 的工作原理 5

在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。... 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 展开
 我来答
贾梓默
2020-06-08 · TA获得超过191个赞
知道答主
回答量:177
采纳率:0%
帮助的人:3.7万
展开全部

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

秒懂百科
2020-12-24 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

session:计算机术语

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
斐青愚从丹
2020-05-13 · TA获得超过3782个赞
知道大有可为答主
回答量:3153
采纳率:30%
帮助的人:193万
展开全部
简单!
这个是状态保持三大对象之一!
原意是会话,会议的意思!
就是你打开浏览器到关闭浏览器
这期间称为一个会话,也就是一个session,
它是保存在服务器端的.
每当客户端请求页面时,服务器就会自动分配一个ID
来唯一标识这个用户!
所以
这个ID
就是
在客户端和服务器端的连接!
但是一般不要用session来保存大量的数据,因为这样占用服务器端的资源!
希望能够帮助你!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
newland18
推荐于2018-03-04 · TA获得超过164个赞
知道答主
回答量:64
采纳率:50%
帮助的人:51.6万
展开全部
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.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式