我有两个WEB应用系统A和B。都运行在TOMCAT下面。现在我想实现的是在B WEB应用系统中。读到A WEB系统生成的COOKIE值。请问如何实现。谢谢
A , B 系统都是JAVA的

解决方案 »

  1.   

    感谢 craig_wolfdon
    我是这样想的。 A和B是两个独立的系统。我现在要把他们结合到一起去。也就是说在A应用中输入用户名和密码,验正成功后。就可以直接登录B系统。不需要重新在B系统中登录了。现在我的思路是在A系统的登录成功后。把用户名以COOKIE的形式保存起来。然后在点B系统的链接时。我在B系统的登录脚本里取着个COOKIE值。然后做判断。
    也就是所谓的单点登录。
    不知道用XML如何实现。还请详细告之。谢谢
      

  2.   

    这样把,其实也只是暂存在一个地方,xml和思想和用txt文本,或者说properties的思想插不多,A系统访问了以后生成一个在线user文件,然后登陆B系统的时候直接读这个user文件就可以完成验证了,
      

  3.   

    to: craig_wolfdon非常感谢。本人是新手。不知道如何生成在线USER文件。 望赐教
      

  4.   

    感觉我和你说的好象有点差异,你说的是用cookie实现,好象也是可以的,我说的是把信息保存在服务器的对应的文件里面,保存在服务器里面就是一般的文件操作,想了一下感觉cookie好象也可以行.至于cookie的操作:
    、 写入Cookie 其实用JSP操作Cookie是非常简单的,我们来看下面一段JSP程序: ........(中间略) 
    <% 
    String cookieName="Sender"; 
    Cookie cookie=new Cookie(cookieName, "Test_Content"); 
    cookie.setMaxAge(10); 
    response.addCookie(cookie); 
    %> 
    ........(其他内容) 
    这样我们就设置了一个Cookie,很简单吧? 我们来仔细研究一下这段代码:   Cookie cookie=new Cookie(cookieName, "Test_Content"); 这一行建立了一个Cookie对象,初始化有两个参数,第一个参数cookieName定义了Cookie的名字,后一个参数,也是一个字符串,定义了Cookie的内容。也就是我们希望网页在用户的机器上标识的文件内容。 接下来一行:cookie.setMaxAge(10),调用了Cookie中的setMaxAge方法,设定Cookie在用户机器硬盘上的存活期为10秒。一个Cookie在用户的硬盘里面存在的时间并不是无限期的,在建立Cookie对象的时候,我们必须制定Cookie的存活期,超过了这个存活期后,Cookie文件就不再起作用,会被用户的浏览器自行删除。如果我们希望用户在下次访问这个页面的时候,Cookie文件仍然有效而且可以被网页读出来的话,我们可以将Cookie的存活期设得稍微长一些。比如cookie.setMaxAge(365*24*60*60)可以让Cookie文件在一年内有效。 三、 读出Cookie Cookie文件创建好后,自然还需要我们把它读出来,否则我们不是白费力气吗?接下来我们看看如何读出在用户硬盘上的Cookie。 ........(中间略) Name value <% 
    Cookie cookies[]=request.getCookies(); 
    Cookie sCookie=null; 
    String svalue=null; 
    String sname=null; 
    for(int i=0;i{ 
    sCookie=cookies[i]; 
    svalue=sCookie.getValue(); 
    sname=sCookie.getName(); 
    %> <% 

    %> name value
    <%=name%> <%=svalue%>........(其他内容) 这一小段JSP文件可以读出用户硬盘上的所有有效的Cookie,也就是仍然在存活期内的Cookie文件。并用表格的形式列出每个Cookie的名字和内容。 我们来逐行分析一下这段代码: Cookie cookies[]=request.getCookies() 我们用request.getCookies()读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面。 接下来我们用一个循环语句遍历刚才建立的Cookie对象数组,我们用sCookie=cookies[i]取出数组中的一个Cookie对象,然后我们用sCookie.getValue()和sCookie.getName()两个方法来取得这个Cookie的名字和内容。 通过将取出来的Cookie的名字和内容放在字符串变量中,我们就能对其进行各种操作了。在上面的例子里,可通过循环语句的遍历,将所有Cookie放在一张表格中进行显示。 
      

  5.   

    你试试看,应该可以,不过要求用户的浏览器没有禁用cookie
      

  6.   

    非常非常的感谢。写的非常的详细。不过我还是有点疑问。我把它打成A.WAR.然后部署到TOMCAT中
    但是问题出现在B系统中。我也把它打成B.WAR包。然后也部署到TOMCAT中
    我就有点不是很明白的地方。
    就是
    A 中的代码<% 
    String cookieName="Sender"; 
    Cookie cookie=new Cookie(cookieName, "Test_Content"); 
    cookie.setMaxAge(10); 
    response.addCookie(cookie); 
    %> 
    response是在A.WAR包的TOMCAT容器中
    B中的request是在B.WAR包的TOMCAT容器中
    我以前写过类似您上面写的代码。发现在B的Cookie cookies[]=request.getCookies(); 
    中取到的COOKIE是NULL。不知道是什么原因。
    您有QQ号码吗。能在线交流吗
      

  7.   

    刚看了一个新闻说的是google 把cookie的存活时间设置的是38年,假如其他的应用程序都可以取的话那么应该就不会产生隐私在google这边的问题了,所以我想肯定一个WAR包的创建的cookie可能也真的只适合一个WAR使用,也就是说WARB可能取不到cookie
      

  8.   

    可以用Session
    A 和 B 都有自己地sessionID 他们之间是不通用地
    但是
    在请求A地登陆验证后,在同一IE窗口进行登陆B验证
    如果两个都可以登陆成功
    当前页面就可以同时登陆A,B
    当然,在B 也可以这样做
      

  9.   

    就是用IFrame 在提交A地时候也顺便提交B 就OK了
    不需要那么复杂