近来工作中发现一个一直被我忽略的问题:在tomcat中,Session是什么时候被创建的?
所用 tomcat 的版本:apache-tomcat-5.5.20。
Session是维持客户端和服务器端会话的 实现在多个页面之间访问保持状态
但是是什么时候被创建的呢?
以前在某J2EE论坛看见数个管理员的说法:session在有客户端访问时就被创建。
这个是对是错一直没有亲自去验证。
测试如下:
创建一个say Hello的servlet,创建一个say Hello的JSP,在里面用
java 代码
- HttpSession session = req.getSession(false);
- out.print(session);
就可以发现,无论访问多少次的Servlet,打印出来的永远为null
但是访问JSP的话,就不会为null,结果为一串表示session对象的字符串。
PS:如果是访问的HTML页面的话,也不会有session的产生···
再在Servlet中修改:
java 代码
- HttpSession session = req.getSession(true);
就可以发现访问Servlet的时候,session通过这个语句被创建。
在JSP头部加入
JSP 代码
- <%@page session="false"%>
就可以发现此JSP不会再主动创建session对象。
结论:session对象直到某服务器端程序调用这样的语句时才被创建,而在JSP中会默认调用
- HttpSession session = req.getSession(true);
这个问题已经很清楚了,教训:不确定的必须自己亲自去做实验验证,不然。。。。。。
分享到:
相关推荐
tomcat修改sessionId,同一台服务器部署多个tomcat需要修改sessionId,否则会出现session冲突的问题
Tomcat作为一款广泛使用的Java应用服务器及Servlet容器,提供了多种方式来设定Session的有效时长。这有助于开发者根据具体业务需求灵活调整Session的生命周期。本文将详细介绍如何通过三种不同的方法来设定Tomcat中...
这些缓存服务可以作为一个集中式的Session存储,Tomcat实例会将Session数据序列化后存储到Redis中,而Nginx则负责协调各个服务器之间的Session同步。 标签中的“session共享”指的就是上述的会话共享需求,“nginx...
对于描述中提到的“版本为1.8”,这可能是指Tomcat的版本,因为Tomcat 1.8是较早的一个版本,支持session的外部化存储。 配置Tomcat session到Memcache涉及以下几个关键步骤: 1. **安装Memcache**:首先,你需要...
3. **Redis**:Redis是一个开源的键值存储系统,支持多种数据结构如字符串、哈希、列表、集合和有序集合,且具有高速缓存和持久化能力。在本场景中,Redis作为Session的中央存储,所有Tomcat服务器都向Redis读写...
以下是一个详细的步骤来实现Tomcat7+Redis的Session共享: 1. **安装和配置Redis**:首先,需要在所有Tomcat服务器和Nginx服务器上安装Redis服务,并确保它们可以正常运行和通信。 2. **配置Tomcat**: - 修改`$...
在分布式系统中,session共享是一个重要的问题,因为用户在访问不同的服务器节点时,需要保持登录状态和其他会话信息的一致性。Memcached作为一个高性能的分布式内存对象缓存系统,常被用来解决这个问题。 描述中...
为了解决这些问题,开发者引入了Redis作为session存储的中间件,而Tomcat-Redis-Session-Manager就是这样一个将Tomcat与Redis结合的解决方案。 Tomcat-Redis-Session-Manager是一个开源项目,它允许Tomcat服务器将...
在构建分布式系统时,Session共享是一个关键问题,特别是在使用Linux上的Tomcat服务器集群与Nginx作为反向代理的情况。标题“tomcat-session共享”和描述中提到的问题,主要是指如何在多台Tomcat服务器之间以及通过...
总的来说,Apache和Tomcat的集成以及Session复制是一个涉及多个配置文件修改的过程,需要确保每个步骤都正确无误。通过这种方式,可以在一台XP机器上实现Web应用的负载均衡,提升系统可用性和容错性,同时保证用户...
`SimpleTcpCluster` 是一个基于 TCP 的集群实现,而 `DeltaManager` 是用于处理 Session 数据更新的管理器。主要配置包括: - `tcpListenAddress`:指定接收复制数据的 IP 地址,例如 `192.168.1.55`。 - `...
在单个服务器上,Session可以通过内存来管理,但在分布式环境下,多个服务器无法共享同一个内存中的Session,这就需要引入外部存储来实现Session共享。 Redis是一个高性能的键值数据库,常被用作缓存和会话存储解决...
一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...
标题中的“Tomcat8亲测可用 tomcat-redis-session-manager的jar包”指的是一个专为Tomcat8设计的,用于管理session的扩展组件。这个组件实现了将Tomcat应用服务器中的用户session数据存储到Redis分布式缓存系统中,...
当一个 Session 开始时,Servlet 容器会创建一个 HttpSession 对象。在某些情况下,把这些 HttpSession 对象从内存中转移到文件系统中或数据库中,需要访问的时候再把它们载入到内存中来。这样做的好处有两点:节约...
一直以来,我误解认为启动了n个tomcat,则Session需要同步复制到n个Tomcat中存在,因此在启动了6个以上的Tomcat,性能会大大下降。 而实际情况下,采取Apache 加Tomcat进行负载均衡集群的时候,是可以不用将Session...
在IT行业中,尤其是在Web应用开发领域,服务器集群和session共享是一个关键问题。当多个服务器共同处理用户请求时,保持用户会话(session)的一致性是必要的,以确保用户在不同服务器之间切换时不会丢失登录状态或...
标题中的“memcached实现多个tomcat共享一个session”是指在分布式系统中,通过使用memcached作为session存储介质,实现多台Tomcat服务器之间的session共享。这样可以确保用户在集群中的任意一台服务器上登录后,其...
tomcat-redis-session-manager是专门为Tomcat设计的一个插件,它实现了SessionManager接口,允许Tomcat将session数据序列化并存储到Redis中。这样,无论用户连接到哪个Tomcat实例,都可以从Redis中获取其session信息...
此压缩包为tomcat8利用redis实现session共享所需要的jar包,包含(commons-pool2-2.6.0.jar、jedis-2.9.0.jar、tomcat-redis-session-manager.jar)直接将三个jar包复制Tomcat目录lib下面,在修改conf下context.xml...