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作用域不仅有助于理解Web应用的工作原理,也是提升开发技能的关键步骤。在实际项目中,合理运用session可以提高用户体验,简化编程逻辑,但也要注意session过多可能导致服务器内存压力增大,因此在设计时...
* Session 作用域是指在当前会话中有效的信息共享范围 * Session 作用域是通过 HttpSession 接口实现的 * Session 作用域的信息共享是通过 setAttribute 和 getAttribute 方法来实现的 * Session 作用域的信息在会话...
1. **SessionID**:这是每个Session的唯一标识,ASP.NET会在创建Session时自动生成,并将其发送给浏览器,通常以Cookie的形式存储。 2. **Timeout**:这个属性决定了Session的有效时间,即用户无操作后多久Session...
(1)在登录应用中,为防止恶意登录,常常需要服务器动态生成验证码并存储在session作用范围中,最后以图像形式返回给客户端显示 (2)下边的代码实现的功能:写一个JSP页,动态生成一个验证码,存储在session作用...
在Java Web开发中,"四个范围"是指PageContext、Request、Session和Application这四个不同的作用域,它们分别代表了Web应用程序中数据存储的不同层级和生命周期。理解并熟练掌握这四个范围,对于编写高效且可维护的...
【session session session szsessdifn】 在Web开发中,Session是一个至关重要的概念,尤其是在ASP.NET框架下。Session机制是服务器端存储用户特定信息的一种方式,它允许开发者在多个页面之间保持用户状态,解决了...
JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...
session驱动类 session存入数据库 数据库存储session 用于session存入数据库
三大作用域 request作用域 session作用域 application作用域【servlet的上下文】
浅谈Spring学习之request, session与globalSession作用域 ...Global Session作用域是指在基于portlet的web应用中创建的bean实例,该实例仅在全局portlet Session的生命周期范围内有效。例如: ```xml ...
如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...
Spring Session通过与Redis的集成,将Session数据序列化后存储到Redis中,每次请求时从Redis读取Session数据,确保了多服务器间的Session一致性。 **3. 集成Spring Session与Redis** 首先,你需要在项目中添加...
3. **作用范围**:`Session`的作用范围是整个应用程序,也就是说,在同一个应用内,只要用户没有退出或者超时,任何地方都可以通过`Session`来获取用户的信息。 4. **数据存储**:`Session`中可以存储各种类型的数据...
- 在Tomcat的配置文件`server.xml`中,可以通过设置`Context`元素下的`defaultSessionTimeout`属性来指定整个应用服务器范围内Session的默认超时时长。 - 这种方式适用于希望对所有部署在该Tomcat实例上的Web应用...
与Session不同的是,Application的作用范围更广,它不仅限于单个用户的会话周期,而是面向整个应用程序的所有用户。这意味着Application对象中的数据对于所有用户都是可见和可访问的。Application通常被用来存储全局...
js 销毁session,session js 销毁session,session
在Web开发中,Session是一种非常重要的机制,用于在用户的整个会话期间保持数据。JavaScript(JS)作为客户端脚本语言,通常与HTML和CSS一起工作,处理用户交互和动态更新页面内容。然而,由于安全性和同源策略的...
C语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言头文件 SESSIONC语言...
3. **Session作用域**: - `session` 对象是 `javax.servlet.http.HttpSession` 类型,它在用户的一系列交互中保持数据。只要用户会话保持活跃,设置在session中的属性就会存在。会话通过cookie或URL重写来跟踪。 ...