趣百科

session是什么,怎么用

编辑:Simone 2024-09-10 18:17:16 539 阅读

session是什么,怎么用

在上一篇文章中,大概说明了cookie是什么,也提到了session和cookie的区别,本文主要针对session做详细的描述。

Seesion就是服务器端开辟的一块内存空间,存放着客户端浏览器窗口的编号,通cookie一样也是用来记录用户的状态,比cookies简单。存放方式依然是名值对的形式存放。

当浏览器访问某个页面时,会在服务器端开辟一块内存,这个内存是和浏览器的窗口或者浏览器的子窗口关联在一起的,这块内存就是session。这个session只能由这个浏览器访问。同一台机器的其他浏览器不能访问此session。那么如果另外的浏览器访问时也想记录一个状态怎么办呢?那就需要在服务器端再建立一个session。并和刚刚那个session进行关联。

由于http协议是非连接性的,当浏览器取完内容就和服务器断掉了,如果我想访问此网站的其他内容或者子窗口,而且这个页面要知道原来访问的session,这个该怎么处理呢?处理方法:第一次访问页面创建session的页面时给浏览器创建一个唯一的号码,同时给创建的session赋予和浏览器同样的号码。然后在服务器端记录一系列的seesion。当我访问第二个页面的时候,请你把号码发给第二个页面,第二个页面再找号码和原来session对应的seesion。就能找到原来的session 。所以每个窗口都有一个唯一的号码。这个号码就是sessionID。那么这个号码在什么地方,我该怎么传递它。传递的方式有两种如下图::cookie 实现

现在,我来点击写信(163邮箱),可见sessionid是不变的

如果我打开新的应用,域名不一样如下,sessionid就会发生变化

如果这时我关闭新的浏览器窗口重新打开sessionid又发生了变化,此时说明,如果会话窗口关闭了,则sessionid就失效了。

Session的实现方法 通过url重写实现。

客户端传seesionID 传给服务器 通过cookie传session 就是将seesionid 放到cookie中传递。放到临时的cookie(非本地cooKies)就可以了。因为session 和浏览器窗口对应的。窗口关掉了,sessionid就不需要了。窗口关了也不会有人访问这个窗口对应的session 了。

如果浏览器没有禁用cookie,那么session的实现就是依赖cookie的。当服务器创建sessionid的时候同时将seesionid 保存在cookie中了。

需要注意的是如果我们关掉窗口再次打开新窗口后sessionid又重新创建了,每次刷新sessionid号不会发生变化(没有关窗口的情况下)。

如果我们的浏览器不支持cookie,那么无论我们怎么刷新页面sessionid都会发生变化(不正常)。那么我们必须自己变成使用url重写的方式实现

使用response.encodeURL(访问地址): 加上这个函数的作用,转码;访问连接地址自动拼接sessionid 。

在登录我们的邮箱时,会有一个记住邮箱名,这个其实是保存在cookie中的。当我们登录进去后就会产生一个sessionid 。当我们在点击写邮件时是打开一个子窗口,这时候子窗口就知道了这个session。如果这个界面不长时间访问这个邮箱,那么再次访问时session就有可能过期了,因为如果我们在写邮件的过程中出现了死机或者窗口关掉了(除非你再次访问),服务器端不知道客户端发生的事情,那么服务器就会根据你上次访问这个session的时间和当前时间进行比较,如果超过设置的过期时间,则就会过期,让你重新登录。就如返回窗口,都是session过不过期的问题。

需要注意的是有些网站在访问处理session时都是依赖cookie的。如果你的浏览器禁用了cookie,网站的访问是不能正常进行的。

同一个application(web application web应用名)下的servlet/jsp可以共享同一个session,但是要在同一个客户端窗口下访问,和cookie不一样,cookie存在路径访问的权限问题。

Session 只要打开新窗口就会产生不同的sessionid 除非是父窗口打开子窗口。

目前来说,我们所在项目的大部分session的管理都交给了服务器中间件去处理了,如tomacat、weblogic

Session的过期时间可以在应用服务器中进行配置,比如tomacat默认的session个的过期时间为30分钟。这个30分钟是上次访问时间距离当前时间的间隔时间。

最后给大家说明一下weblogic配置session的处理的两种情况:

在web.xml中进行配置(覆盖weblogic.xml的TimeoutSects的属性)

使用weblogic.xml的配置

版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/life/5493.html

相关推荐