response.sendRedirect("/dir/abc.jsp?a=aaa&b=bbbb")
这样就不会丢了。。

解决方案 »

  1.   

    session是给会话,他代表整个浏览器,在当前的浏览器起作用,关掉浏览器重新启动,就不是他的范围了,
      

  2.   

    有没有放到session里,重定向也不会丢的了
      

  3.   

    你定义两个session变量就不会丢了,到其他页面要用的话就取出来
      

  4.   

    楼主的这个是两个单独的应用啊,这样的话session当然会丢了,这就好比你登录了网站A,获取了session,然后你能用这个session去访问网站B吗?对于这种情况,可以考虑SSO来解决
      

  5.   

    session 记录的是你的浏览器和服务器的一个会话,所以你如果没有关闭浏览器,而且你的网页是重定向是在同一个web服务器上面,若你没有主动清除,Session是不会丢掉的,但是如果你要重定向到另外的服务器,想要保存信息的办法:在表单中存储(前提是你转到另外一个服务器是用提交表单的方法,而不是Redirect)或者在地址栏里带上信息(很不安全)
      

  6.   

    to:mxlmwl
       你说到的问题发生的原因,但是有以下问题:
       假设<context path="/" docBase="ROOT" />是网站a,<context path="/dir" docBase="dir1" />是网站b.
       现在的情况是我访问网站a的index.jsp(localhost/index.jsp),此时a的index.jsp把请求重定向到网站b的abc.jsp(localhost/dir/abc.jsp),abc.jsp中设置session,那么session应该是网站b的session,然后我在网站b的def.jsp中取abc.jsp中设置的session此时并取不到。
       总结一下,以上是两个应用是没有问题的。但是并不存在网站b取网站a的session的问题。但是现在有个问题是,path"/"是一个特殊的地址,当index.jsp把请求重定向到/dir/abc.jsp的时候,服务器是认为在访问别的应用还是访问本身。在本质一点,在这个访问过程中,服务器是建立了两个还是一个session,如果是两个,那么分别是在什么时候建立的。
      

  7.   

    <context path="/" docBase="ROOT" />
        <context path="/dir" docBase="dir1" />这证明你是两个应用,这不能共用session
      

  8.   

    看来楼主没弄明白web访问的实质,实质不是通过URL来判断的,不能认为/和/dir都是在/下面,就误认为他们是同一个应用了,这只不过是设置的一个虚拟的访问地址罢了。(具体的理论性名词偶知道的不多,有点土了,呵呵)。对于服务器来说,它会判断你是否是跨域的,所以你重定向到/dir下,web服务器当然认为是在访问别的应用,如果连这个都无法判断,那还叫是服务器么,岂不存在着严重的系统漏洞。你说的/dir/abc.jsp中设置了session,然后在/dir/def.jsp中取session,不可能取不到,如果你在浏览器的同一个进程内的话。
      

  9.   

    to:Iambest
       我说了,我没有想公用session。我只是想想在,/dir/def.jsp中取出/dir/abc.jsp中的session,这两个都在应用“/dir”下
      

  10.   

    to:mxlmwl
       “不能认为/和/dir都是在/下面,就误认为他们是同一个应用了”我从来没这样认为。我/dir/abc.jsp和/dir/def.jsp是一个应用(/dir)吧。def.jsp中取abc.jsp中session的值应该是同一应用吧。
        “你说的/dir/abc.jsp中设置了session,然后在/dir/def.jsp中取session,不可能取不到,如果你在浏览器的同一个进程内的话。”这句话说的有点武断。
        如果我访问localhost然后重定向到 /dir/abc.jsp,在/dir/def.jsp中是取不到的。但是我通过localhost/abc.jsp直接访问,在/dir/def.jsp中是可以取到的。
        还有没有人发表意见,欢迎大家讨论,发表高见呀!
      

  11.   

    1。 “不能认为/和/dir都是在/下面,就误认为他们是同一个应用了”我从来没这样认为。看看你自己说的:但是现在有个问题是,path"/"是一个特殊的地址,当index.jsp把请求重定向到/dir/abc.jsp的时候,服务器是认为在访问别的应用还是访问本身。那你是怎样认为的呢?2。    “你说的/dir/abc.jsp中设置了session,然后在/dir/def.jsp中取session,不可能取不到,如果你在浏览器的同一个进程内的话。”这句话说的有点武断。一点都不武断,只要你能正常访问session,只要session没清空你可以举个反例来说明一下。3。如果我访问localhost然后重定向到 /dir/abc.jsp,在/dir/def.jsp中是取不到的。呵呵,没试过我怎么敢和你打保票呢,偶上午特地验证过的。
    我的路径是:localhost/aa.jsp,在里面重定向到/dir/abc.jsp,然后在abc.jsp中设置session,然后abc.jsp有一个链接到/dir/def.jsp,def.jsp中可以打出在abc.jsp中设置的值。
    这个是肯定没错的,不过为了验证,我还是特意试了一遍。如果你有不同意意见,你可以把你的过程说出来让大家都试一下就知道了。
      

  12.   

    session只能在一个<context>中有效.