`
tjsy4050
  • 浏览: 21826 次
  • 来自: ...
社区版块
存档分类
最新评论

Session的作用范围(转帖)

阅读更多

session是在服务器端建立的,浏览器访问服务器会有一个jsessionid,浏览器端通过 jsessionid定位服务器端的session,session的创建和销毁由服务器端控制。当浏览器关闭后,session还存在在服务器端,只不 过你新开的浏览器去访问服务器会创建另一个session,这个时候的jsessionid已经不一样了。也就不能访问上一次的哪个session里面的 内容了。
那服务器端session如何建的呢? 普通htm不会创建,jsp默认是创建的,只要你访问一个任何一个jsp就会创建(不过只创建一次),你关闭浏览器从新访问又会创建一个,这些创建的 session由服务器自己控制销毁,你也可以在服务器端代码中销毁。
session其实简单:
先request.getsession(),当已有一个session与前request相关时就返回对这个session的引用,当没有时就生成一 个.一个session在server通过一个sessionid来标识的。也就是说在一个server是不会有两个相同sessionid的 session.

那么session为什么会和cookie扯在一起呢?

正如我所说对於一个session来说它的sessionid就是其身份的标识。若我们将这个sessionid保存到用户端,当同一个会话的后序请求来 时都将这个sessionid放在request 的header中(也就是我们说的cookie)这样不就可以来验证这个request是否与之前的request是同一个会话了吗!

什么是会话呢?
我们可以通俗一点理解。只要你的browers不关我们就称这一系列的request与response为一个会话。一断你close就称这个会话已结 束。虽然会话结束但并不代表你的session就被destroy.因为session是存活在server上的。它的生命完全由server来主宰 (web.xml中的设定).
虽然你的session还存活在server上但你已无法再取得它。因为j2ee的api只给我们一种方法来取得与当前会话相关的session的引 用:request.getsession() or reqeust.getsession(boolean)


这也就是为会什么会有"当浏览器关session就结束"这个错误的说法了!


深刻理解一下,  
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建,
注意如果JSP没有显示的使用 <%@page session="false"%> 关闭session,
则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);

这也是JSP中隐含的session对象的来历。

分享到:
评论

相关推荐

    session 作用域

    学习session作用域不仅有助于理解Web应用的工作原理,也是提升开发技能的关键步骤。在实际项目中,合理运用session可以提高用户体验,简化编程逻辑,但也要注意session过多可能导致服务器内存压力增大,因此在设计时...

    request、session作用域的理解

    * Session 作用域是指在当前会话中有效的信息共享范围 * Session 作用域是通过 HttpSession 接口实现的 * Session 作用域的信息共享是通过 setAttribute 和 getAttribute 方法来实现的 * Session 作用域的信息在会话...

    session定义和作用

    1. **SessionID**:这是每个Session的唯一标识,ASP.NET会在创建Session时自动生成,并将其发送给浏览器,通常以Cookie的形式存储。 2. **Timeout**:这个属性决定了Session的有效时间,即用户无操作后多久Session...

    JSP动态生成验证码存储在session作用范围内

    (1)在登录应用中,为防止恶意登录,常常需要服务器动态生成验证码并存储在session作用范围中,最后以图像形式返回给客户端显示 (2)下边的代码实现的功能:写一个JSP页,动态生成一个验证码,存储在session作用...

    四个范围 pagecontext request session application

    在Java Web开发中,"四个范围"是指PageContext、Request、Session和Application这四个不同的作用域,它们分别代表了Web应用程序中数据存储的不同层级和生命周期。理解并熟练掌握这四个范围,对于编写高效且可维护的...

    session session session szsessdifn

    【session session session szsessdifn】 在Web开发中,Session是一个至关重要的概念,尤其是在ASP.NET框架下。Session机制是服务器端存储用户特定信息的一种方式,它允许开发者在多个页面之间保持用户状态,解决了...

    Jsp内置对象session总结

    JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...

    session驱动类 session存入数据库

    session驱动类 session存入数据库 数据库存储session 用于session存入数据库

    三大作用域request、session、application

    三大作用域 request作用域 session作用域 application作用域【servlet的上下文】

    浅谈Spring学习之request,session与globalSession作用域

    浅谈Spring学习之request, session与globalSession作用域 ...Global Session作用域是指在基于portlet的web应用中创建的bean实例,该实例仅在全局portlet Session的生命周期范围内有效。例如: ```xml ...

    自己实现的spring-session

    如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...

    spring session redis分布式session

    Spring Session通过与Redis的集成,将Session数据序列化后存储到Redis中,每次请求时从Redis读取Session数据,确保了多服务器间的Session一致性。 **3. 集成Spring Session与Redis** 首先,你需要在项目中添加...

    session,request区别

    3. **作用范围**:`Session`的作用范围是整个应用程序,也就是说,在同一个应用内,只要用户没有退出或者超时,任何地方都可以通过`Session`来获取用户的信息。 4. **数据存储**:`Session`中可以存储各种类型的数据...

    设定tomcat中session过期时间.txt

    - 在Tomcat的配置文件`server.xml`中,可以通过设置`Context`元素下的`defaultSessionTimeout`属性来指定整个应用服务器范围内Session的默认超时时长。 - 这种方式适用于希望对所有部署在该Tomcat实例上的Web应用...

    application与session的区别

    与Session不同的是,Application的作用范围更广,它不仅限于单个用户的会话周期,而是面向整个应用程序的所有用户。这意味着Application对象中的数据对于所有用户都是可见和可访问的。Application通常被用来存储全局...

    js 销毁session,session

    js 销毁session,session js 销毁session,session

    js操作session例子

    在Web开发中,Session是一种非常重要的机制,用于在用户的整个会话期间保持数据。JavaScript(JS)作为客户端脚本语言,通常与HTML和CSS一起工作,处理用户交互和动态更新页面内容。然而,由于安全性和同源策略的...

    C语言头文件 SESSION

    C语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言...

    JSP的四种作用范围总结

    3. **Session作用域**: - `session` 对象是 `javax.servlet.http.HttpSession` 类型,它在用户的一系列交互中保持数据。只要用户会话保持活跃,设置在session中的属性就会存在。会话通过cookie或URL重写来跟踪。 ...

Global site tag (gtag.js) - Google Analytics