您的位置:首页 > 运维架构 > Tomcat

Tomcat 不同web项目session共享.

2015-08-27 10:26 387 查看
好记忆不如按烂笔头 ... ...

同一个 tomcat 下,不同的 Web 项目实现session的共享。

这个是基于tomcat本身来实现的,没有借助外力来实现。

首先,准备两个web项目,Demo1 和Demo2 , 用 servlet 实现简单的登录功能。

在Demo1中的doPost方法中加入:

String userName = request.getParameter("userName");

String userPass = request.getParameter("userPass");

HttpSession session = request.getSession();

ServletContext context = session.getServletContext();

session.setAttribute("userPass", userPass);

session.setAttribute("userName", userName);

context.setAttribute("session", session);

response.sendRedirect("success1.jsp");

将登录的userName和userPass 存入到session中,session由存入到ServletContext对象中去.

在Demo2 中的doPost方法实写上如下代码:

String name = request.getParameter("name");

String pass = request.getParameter("pass");

System.out.println("name = " + name + ", pass = " + pass);

HttpSession session = request.getSession();

ServletContext context = session.getServletContext();

ServletContext demo1Context = context.getContext("/Demo1");

if (demo1Context != null && !demo1Context.equals("")) {

HttpSession sess = (HttpSession) demo1Context.getAttribute("session");

System.out.println(sess.getAttribute("userName"));

System.out.println(sess.getAttribute("userPass"));

}

response.sendRedirect("success2.jsp");

name 和 pass 为页面的输入,demo1Contex t获得了 Demo1 中的userName 和 userPass 。

而以上的关键是在tomcat/conf/server.xml 的 host标签中配置如下:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />

<Context path="/Demo1" reloadable="true" crossContext="true" />

<Context path="/Demo2" reloadable="true" crossContext="true"/>

</Host>

如此就实现了同一个tomcat下,session信息的共享问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: