`
ralphr
  • 浏览: 143238 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Session机制一些常见的问题(转)

    博客分类:
  • web
阅读更多

1、session在何时被创建

一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用

HttpServletRequest.getSession(true)这样的语句时才被创建,注意如果JSP没有显示的使用 %@page session="false"% 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历。

由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。

2、session何时被删除

综合前面的讨论,session在下列情况下被删除a.程序调用HttpSession.invalidate();或b.距离上一次收到客户端发送的session id时间间隔超过了session的超时设置;或c.服务器进程被停止(非持久session)

3、如何做到在浏览器关闭时删除session

严格的讲,做不到这一点。可以做一点努力的办法是在所有的客户端页面里使用javascript代码window.oncolose来监视浏览器的关闭动作,然后向服务器发送一个请求来删除session。但是对于浏览器崩溃或者强行杀死进程这些非常规手段仍然无能为力。

4、有个HttpSessionListener是怎么回事

你可以创建这样的listener去监控session的创建和销毁事件,使得在发生这样的事件时你可以做一些相应的工作。注意是session的创建和销 毁动作触发listener,而不是相反。类似的与HttpSession有关的listener还有HttpSessionBindingListener,HttpSessionActivationListener和HttpSessionAttributeListener。

5、存放在session中的对象必须是可序列化的吗

不是必需 的。要求对象可序列化只是为了session能够在集群中被复制或者能够持久保存或者在必要时server能够暂时把session交换出内存。在 Weblogic Server的session中放置一个不可序列化的对象在控制台上会收到一个警告。我所用过的某个iPlanet版本如果session中有不可序列化的对象,在session销毁时会有一个Exception,很奇怪。

6、如何才能正确的应付客户端禁止cookie的可能性

对所有的URL使用URL重写,包括超链接,form的action,和重定向的URL,具体做法参见(http://e-docs.bea.com/wls/docs70/webapp/sessions.html#100770)。

7、开两个浏览器窗口访问应用程序会使用同一个session还是不同的session
参见第三小节对cookie的讨论,对session来说是只认id不认人,因此不同的浏览器,不同的窗口打开方式以及不同的cookie存储方式都会对这个问题的答案有影响。

8、如何防止用户打开两个浏览器窗口操作导致的session混乱

这个问题与防止表单多次提交是类似的,可以通过设置客户端的令牌来解决。就是在服务器每次生成一个不同的id返回给客户端,同时保存在session里,客 户端提交表单时必须把这个id也返回服务器,程序首先比较返回的id与保存在session里的值是否一致,如果不一致则说明本次操作已经被提交过了。可以参看《J2EE核心模式》关于表示层模式的部分。需要注意的是对于使用javascript window.open打开的窗口,一般不设置这个id, 或者使用单独的id,以防主窗口无法操作,建议不要再window.open打开的窗口里做修改操作,这样就可以不用设置。

9、为什么在Weblogic Server中改变session的值后要重新调用一次session.setValue做这个动作主要是为了在集群环境中提示Weblogic Server session中的值发生了改变,需要向其他服务器进程复制新的session值。

10、为什么session不见了

排除session正常失效的因素之外,服务器本身的可能性应该是微乎其微的,虽然笔者在iPlanet6SP1加若干补丁的Solaris版本上倒也遇到 过;浏览器插件的可能性次之,笔者也遇到过3721插件造成的问题;理论上防火墙或者代理服务器在cookie处理上也有可能会出现问题。

出现这一问题的大部分原因都是程序的错误,最常见的就是在一个应用程序中去访问另外一个应用程序。

分享到:
评论

相关推荐

    网页session的一些常见问题并解决方案

    解决方法是使用更安全的Session ID生成机制,如结合用户IP和时间戳,确保每个Session ID的独特性。同时,注意并发控制,避免多个请求同时修改同一Session数据。 四、Session性能优化 大量使用Session可能导致服务器...

    Cookie、Session机制详解.doc

    Session机制可以弥补Cookie的缺点,但是Session机制也存在一些问题,例如Session的过期问题和Session的安全性问题。 在Web应用程序中,Cookie和Session机制都是非常重要的技术,开发者需要了解这些技术的原理和优...

    Cookie与Session机制

    【Cookie与Session机制】在Web开发中,会话跟踪是必不可少的技术,用于区分不同用户的操作。常见的会话跟踪手段有Cookie和Session。Cookie是通过在客户端存储信息来识别用户身份,而Session则是在服务器端存储信息来...

    Cookie机制和Session机制

    为了解决这一问题,开发了两种主要的状态管理机制:Cookie机制和Session机制。 #### 二、术语解释:Session 在不同的上下文中,"session"这个词有着不同的含义,尤其是在网络通信和Web开发领域。通常,"session...

    在asp.net中使用session常见问题集锦

    ### 在ASP.NET中使用Session常见问题集锦 #### Session为何会丢失? 在ASP.NET应用程序中,用户的状态(Session)有时会出现丢失的情况。这种情况的发生可能是由于多种原因造成的,比如应用程序池的回收、Session...

    session机制与cookie机制(来源于IT168)

    【标题】:“session机制与cookie机制(来源于IT168)” 【描述】:这篇文章讨论了session和cookie在Web开发中的重要角色,解释了它们如何帮助维持用户状态,并且介绍了这两种机制的基本概念。 【标签】:“session...

    cookie机制和session机制的区别.

    ### Cookie机制与Session机制的区别 #### 一、概念解析 **Cookie** 和 **Session** 是两种常见的用于在Web应用程序中维护用户状态的技术。 - **Cookie**:是一种客户端存储技术,服务器可以通过HTTP响应向客户端...

    session机制详解

    目录: 一、术语session 二、HTTP协议与状态保持 三、理解cookie机制 四、理解session机制 五、理解javax.servlet.http.HttpSession 六、HttpSession常见问题 七、跨应用程序的session共享 八、总结

    理解session机制

    总的来说,Session机制是Web应用程序中维持用户状态的关键技术,理解和正确使用Session对于开发高效、安全的Web应用至关重要。开发者需要根据具体的应用场景选择合适的Session管理策略,以保证用户体验和系统性能。

    实现session身份认证机制

    `session`身份认证机制是常用的一种方法,它用于在用户登录后维护用户的会话状态,确保用户在多个请求之间保持登录状态。在这个主题中,我们将深入探讨如何使用Node.js的Express框架以及cookie来实现session身份认证...

    session机制

    在实际使用`HttpSession`接口时,可能会遇到以下一些常见的问题: 1. **会话超时**:默认情况下,如果在指定的时间内没有客户端请求,则session会被视为无效。可以通过`setMaxInactiveInterval()`方法自定义超时...

    session机制,专门针对session做的

    总结起来,session机制是Web开发中不可或缺的一部分,它解决了HTTP协议无状态的问题,使得服务器能够识别并跟踪用户的交互,从而实现个性化的用户体验和复杂的业务逻辑。理解session的工作原理和使用方法,对于开发...

    验证码的session问题

    验证码的Session问题主要涉及到Web应用中的用户验证与安全机制。在Web开发中,验证码是一种防止自动机器人或恶意脚本进行非法操作的有效手段,如防止批量注册、刷票等。而Session是服务器端用来存储用户会话信息的一...

    8.session机制.doc

    为了解决这个问题,Session机制应运而生。 Session的基本原理是,服务器为每个客户端(浏览器)创建一个唯一的Session ID,并通过Cookie将这个ID发送给客户端。客户端在后续的请求中携带这个Session ID,服务器根据...

    Session机制详解(jsp-servlet_技术)文.pdf

    然而,Cookie存在一些限制,如大小限制、安全性问题和可被禁用的可能性,这就催生了Session机制。 三、理解Cookie机制 Cookie是服务器发送到用户浏览器并存储的一小块数据,包含用户的相关信息。当用户再次请求...

    关于session丢失问题

    然而,Session丢失问题是一个常见的技术挑战,可能导致用户在使用过程中频繁地重新登录或者丢失相关信息。以下是对这个问题的详细分析和解决策略。 首先,我们需要理解Session丢失的常见原因: 1. **Cookie被禁用...

    解决springboot实现跨域session共享问题

    然而,随着Web服务的复杂性和交互性增加,跨域资源共享(CORS)和会话(Session)共享成为开发者需要面对的重要问题。本文将详细讲解如何在Spring Boot应用中解决跨域session共享的问题,并探讨防止SQL注入的相关...

Global site tag (gtag.js) - Google Analytics