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中放置一个不可序列化的对象在控制台上会收到一个警告.
6、如何才能正确的应付客户端禁止cookie的可能性
对所有的URL使用URL重写,包括超链接,form的action,和重定向的URL.
7、开两个浏览器窗口访问应用程序会使用同一个session还是不同的session
对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正常失效的因素之外,服务器本身的可能性应该是微乎其微的.
分享到:
相关推荐
### 在ASP.NET中使用Session常见问题集锦 #### Session为何会丢失? 在ASP.NET应用程序中,用户的状态(Session)有时会出现丢失的情况。这种情况的发生可能是由于多种原因造成的,比如应用程序池的回收、Session...
本文将深入探讨在"PHP程序设计-3期(KC016) 3.12.1开始session常见问题.docx"中提到的两个主要问题,并提供相应的解决方案。 ### 问题 1:启动 session 的函数使用地方错误 在PHP中,启动session的主要函数是`...
然而,在验证码的Session问题中,可能会遇到以下几种常见问题: 1. **Session过期**:如果用户在一段时间内没有操作,Session可能会因为超时而被服务器清理,导致验证码失效。开发者需要设置合理的Session超时时间...
在Java编程中,后台请求HTTP并保持Session是一个常见的任务,特别是在需要访问受保护的Web资源时,例如登录后的网页数据。下面将详细讲解这个过程,包括GET和POST方法的使用,以及Session管理。 首先,我们需要了解...
在实际使用过程中,用户可能会遇到各种问题,其中"phpcms web发布session过期问题"是一个常见的困扰。这个问题通常出现在用户登录后,在一段时间不操作或者刷新页面时,系统提示session已过期,导致用户需要重新登录...
在Java Web开发中,Session是HTTP协议中一种用于在客户端和服务器之间保持状态的重要机制。在本例中,“java中使用session购物车的简单例子”是通过Servlet技术实现的一个应用场景,旨在帮助开发者理解如何利用...
#### 七、Session的常见问题与解决方案 - **Session丢失问题**: - 检查是否在输出任何内容之前调用了`session_start()`。 - 确保Cookie没有被禁用。 - 检查Session配置是否正确设置。 - **Session跨域问题**: ...
以下主要介绍两种常见的客户端Session管理方式: 1. **Cookie**: Cookie是最传统的方式,通过设置`Set-Cookie` HTTP响应头将数据发送到客户端,然后在后续的请求中,浏览器会自动将Cookie包含在请求头中。...
然而,传统的基于内存的session管理方式在这种环境下会遇到问题,因为session信息存储在单个服务器的内存中,无法在服务器之间共享。为了解决这个问题,我们可以将session信息持久化到外部存储,如Redis,一个高性能...
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们用于创建动态网页和处理HTTP请求。Session技术则是在客户端与服务器之间维护状态的一种方式,尤其适用于多页面间的用户信息共享。本篇...
这个问题似乎不完整,可能是询问session的其他方面,如session数据的存储方式、session复制在集群环境中的处理等。在分布式环境中,通常需要通过共享存储(如内存缓存或数据库)或粘性负载均衡来同步session信息。 ...
在现代Web应用开发中,Session共享是一个常见的需求,特别是在分布式系统中。`SpringSession` 是一个优秀的框架,它提供了一种优雅的方式来进行Session管理,尤其是跨服务器的Session共享。配合`Redis`作为存储后端...
5. **Session管理常见问题及解决** - **Session劫持**:攻击者通过获取用户的Session ID,可以冒充用户进行操作。防止方法包括使用HTTPS、定期更换Session ID、限制Session ID的有效时间等。 - **Session过期**:...
但有一种常见的方法可以间接实现这一目标,即通过HTTP请求(通常是Ajax)将数据发送到服务器,由服务器处理后再保存到Session中。不过,本例中提到的是一种不依赖Ajax的解决方案。 这个解决方案的核心是利用HTML...
分布式Session的管理是大型Web应用面临的关键挑战之一,因为HTTP协议本身的无状态特性使得在多服务器环境中保持用户状态变得复杂。以下是对四种常见分布式Session解决方案的详细解释: 1. **Session集中式存储**: ...
常见的会话跟踪手段有Cookie和Session。Cookie是通过在客户端存储信息来识别用户身份,而Session则是在服务器端存储信息来实现这一目的。 **Cookie机制** Cookie是由W3C组织提出并由Netscape社区发展起来的一种...
以上就是三种判断Session过期的常见方式,每种都有其适用的场景。在实际开发中,可以根据项目需求和性能要求选择合适的方法。通过理解这些方法,开发者能够更好地管理用户状态,提升用户体验,同时确保系统的安全性...