同一个tomcat多个web应用共享session

tomcat版本:apache-tomcat-6.0.29(次方tomcat6和tomcat7支持)

1.修改D:apache-tomcat-6.0.29confserver.xml文件


由于每个app都有一个唯一的一个ServletContext 实例对象,下面的所有的servlet 共享此ServletContext。
利用ServletContext 中的setAttribute() 方法把Session 传递过去 然后在另外一个app中拿到session实例。


设置为true 说明你可以调用另外一个WEB应用程序 通过ServletContext.getContext() 获得ServletContext ;
然后再调用其getattribute() 得到你要的对象。

2.创建两个web项目

两个项目访问URL为:

        http://localhost:8080/app1/

        http://localhost:8080/app2/

app1的index.jsp代码如下:

app2的index.jsp代码如下:

3.访问项目:

4.原理(个人浅见)

全局只用app1的session!

app1使用session时,直接使用;其他app使用session的时候通过application获取app1的session,然后使用。

当浏览器关闭,app1的session也就关闭。application的globalSession的value为null。


获取application

application为jsp的九大内置对象,在jsp里面可以直接使用。在servlet或者struts2的action里面可以通过request.getSession.getServletContext()获取!

APP1的角色

一般app1扮演“首页”角色,初始化。后面的项目使用其session。

原文地址:https://www.cnblogs.com/pengyan5945/p/5218344.html