Tomcat 不同web项目session共享.

来源:互联网 发布:怀化学院教务网络 编辑:程序博客网 时间:2024/06/06 02:43


好记忆不如按烂笔头 ... ...


同一个 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 &quot;%r&quot; %s %b" />
         <Context path="/Demo1"  reloadable="true" crossContext="true" />
         <Context path="/Demo2"  reloadable="true" crossContext="true"/>

      </Host>


如此就实现了同一个tomcat下,session信息的共享问题。





0 0