`
guoyiqi
  • 浏览: 997891 次
社区版块
存档分类
最新评论

session 对新开窗口无效

    博客分类:
  • jsp
阅读更多

出现问题

session 对新开窗口无效。当你登录成功后,重新启动另一个新的窗口,发现你还得重新登录! 

解决方法

用cookie,但是要给cookie加个过期时间,否则你在新开的窗口中仍然得不到这个值。不要忘了,session可是和cookie有着关系的。

相关知识:(以下为引用)

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。

保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于SEEESIONID,而。比如weblogic对于web应用程序生成的cookie,JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是JSESSIONID。

由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,另一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

在谈论session机制的时候,常常听到这样一种误解“只要关闭浏览器,session就消失了”。其实可以想象一下会员卡的例子,除非顾客主动对店家提出销卡,否则店家绝对不会轻易删除顾客的资料。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。

恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。

分享到:
评论

相关推荐

    IE8串session的解决方法

    需要注意的是,-nomerge参数只适用于IE8,并且只对新打开的窗口有效,对新打开的标签页无效。 3. **修改IE快捷方式**:你可以编辑IE8的桌面快捷方式,向其目标路径后添加-nomerge参数。例如,将原来的快捷方式路径`...

    jsp页面中窗口关闭,退出的方式分享.docx

    本文档详细介绍了JSP页面中实现窗口关闭与退出的不同方法,包括通过JavaScript关闭窗口以及通过HttpSession清除Session实现退出功能。这些方法在实际开发中非常实用,能够帮助开发者更好地管理Web应用中的用户交互...

    Session详解

    2. **浏览器会话**:指从打开浏览器窗口到关闭的时间段内发生的活动。 3. **面向连接与状态保持**:在网络通信中,"Session"常暗示双方建立的连接,并能够维持状态,如同服务员记得常客的习惯。 4. **状态保持解决...

    session详解

    - **浏览器会话**:特指从打开浏览器窗口到关闭窗口的这段时间内发生的所有活动。 - **用户会话**:有时指的是用户进行一系列连续操作的时间段,例如从登录网站到完成购买行为并退出的全过程。 - **技术意义上的...

    C#多窗口登陆方式,表格应用,数据库

    4. **数据验证**:在用户登录时,需要对输入的数据进行验证,防止空值、非法字符或无效凭证。C#提供了一系列的验证方法和控件,如RequiredFieldValidator、RegularExpressionValidator等,可以确保输入的有效性。 5...

    Web测试你需要知道的HTTP—cookie与session的实现

    临时 Cookie 的作用域通常与 Session 一致,即当前浏览器及其子窗口可以共享。 #### Cookie 的有效期 Cookie 的有效期可以通过以下三种方式进行设置: - 如果有效期设置为大于零的数值,则表示 Cookie 的持续时间...

    Java_登录窗口源代码

    4. **错误处理**:良好的用户体验要求对无效输入或登录失败进行适当的反馈。这可能包括在文本框下方显示错误消息,或者弹出警告对话框。 5. **安全性**:密码的处理必须谨慎,通常不建议明文存储。应使用哈希算法对...

    PHP实现cookie跨域session共享的方法分析

    总之,PHP实现Cookie跨域和Session共享涉及对Web基础协议、同源策略以及PHP特性的深入理解。正确处理这些问题能提高Web应用的用户体验和安全性。在实际开发中,需要根据项目需求和架构选择合适的方法。

    session-spark:session分析

    - **数据清洗**:对数据进行预处理,如去除无效数据、填充缺失值、统一时间格式等。 - **Session划分**:基于时间窗口或者特定行为(如用户离开页面)来划分session。例如,如果两个事件之间的间隔超过30分钟,...

    格式化都无效 怎么样清除“不可杀”病毒.docx

    "格式化都无效 怎么样清除“不可杀”病毒" 在计算机系统中,存在一种非常危险的病毒,即“不可杀”病毒。这种病毒可以通过 Autorun.inf 文件来实现自动运行加载命令,从而对计算机系统造成威胁。当用户在选择“工具...

    仿迅雷博客弹出登录窗口_aspx开发教程.rar

    在ASP.NET Web Forms开发中,创建一个仿迅雷博客弹出登录窗口的教程涉及到多个关键知识点,这将有助于提升用户体验并实现用户身份验证。在这个教程中,我们将关注以下几个方面: 1. **HTML与CSS设计**:首先,我们...

    ASP.NET源码——仿迅雷博客弹出登录窗口.zip

    同时,如果登录成功,可能还会设置session或cookie来保存用户的登录状态。 5. 用户界面:弹出登录窗口的实现可能利用CSS和JavaScript来创建模态对话框效果。例如,可以使用Bootstrap的modal组件,或者自定义CSS和...

    session_testing

    session_testing这个话题主要涉及了如何对Web应用中的会话管理进行有效测试,以确保用户在不同页面间切换时,其登录状态和个性化设置能够得到正确维护。下面我们将深入探讨这个主题。 会话(Session)是Web应用中...

    windows消息WM.pdf

    以下是对标题“windows消息WM.pdf”中提到的一些关键Windows消息的详细解释: 1. **WM_NULL**: 这是消息编号为$0000的消息,通常表示无操作或无效消息。 2. **WM_CREATE**: 在应用程序创建一个窗口时发送,编号$...

    WM_Messages各类消息及对应函数

    5. ON_WM_CAPTURECHANGED:窗口失去鼠标捕获时,发送此消息,处理函数OnCaptureChanged接收新捕获窗口的句柄。 6. ON_WM_CHANGECBCHAIN:在剪贴板链中的窗口被销毁时发送,OnChangeCbChain处理函数更新剪贴板链。 ...

    NTKO文档在线编辑控件4.0.1.2

    NTKO OFFICE文档控件能够在浏览器窗口中直接编辑Word,Excel,Wps等Office文档并保存到任意Web服务器。实现文档和电子表格的统一管理。同时支持强制痕迹保留,手写签名,电子印章,版本控制,附件上传等办公自动化系统...

    windows问题全解 windows问题全解.

    - 如果上述方法无效,可以尝试创建一个新的用户账户。 - 或者,调整桌面设置,去除“当前主页”以及其他所有项目的勾选,并取消“锁定桌面项目”。 #### 八、解决盗版验证提示 - **操作步骤**: - 终止运行中的`...

    智能小区位图按钮加登录

    5. 登录状态保持:如果用户选择了自动登录,可以使用Cookie或Session来保持登录状态,直到用户手动退出或者会话超时。 在“ISHAlert(位图按钮+登录)11.22”这个程序中,可能包含了位图按钮和登录窗口的实现示例。...

    C#个人浏览器源代码

    【C#个人浏览器源代码】是一个基于C#编程语言实现的个人化网络浏览器项目,它旨在提供一个定制化的浏览体验,同时解决常见的技术问题,如Session管理、JavaScript交互以及窗口关闭处理。在这个项目中,开发者可能...

Global site tag (gtag.js) - Google Analytics