在一个struts做的程序中,session在每次跳转的时候都在变,不明白为什么?

kingapex1 2005-11-28 11:40:18

环境是这样的:
两个应用发布在两台服务器上,code应用发布在10.1.66.218上,oa2 应用发布在10.1.66.219上,有如下业务流程:
1.在oa2应用中的一个页面add.jsp 中做一个超级链接的跳转:
<a href="http://10.1.66.218:8080/code/interface.do?username=test&password=test">添加人员</a>
这样就会跳转到code应用中名为interface的action中,在此action中进行登录并且将用户信息保留进session中.然后通过
forward跳转到code应用本身中的addperson.jsp

action中存入session中代码如下:
HttpSession session = request.getSession():
String sessionid = session.getId(); // 为了体现session会不同,将其sessionid取出.
//......将对象存入session,略.



2.在addperson.jsp会通过form 请求code应用中的一个action 名为create.do: (注:create.do和addperson.jsp都在code应用中)
此时需要读取1步中即interface.do中存入的对象,代码如下:

HttpSession session = request.getSession():
String sessionid = session.getId(); // 为了体现session会不同,将其sessionid取出.

//...读取session中的对象



以上两步操作中在一些特定情况下两次取出sessionid 会不同,所以取不到第一步中session存入的信息:

1.如果单独访问interface.do没有问题sessionid 相同,对象也可以正常取出来.
访问的地址可能是: http://10.1.66.218:8080/code/interface.do?username=test&password=test 就是直接访问code应用

2.如果先通过 http://10.1.66.219:8080/oa2/add.jsp 跳到 10.1.66.218的 interface.do 中, 两次的sessionid会不同

3.如果将 oa2 的应用也发布在 10.1.66.218上 在通过 http://10.1.66.218:8080/oa2/add.jsp 跳转到 10.1.66.218的 interface.do 中, 没问题两次的sessionid会相同

4.如果将 oa2 的应用也发布在 10.1.66.218上 但通过 http://localhost:8080/oa2/add.jsp 跳到 10.1.66.218的 interface.do 中, 两次的sessionid会不同


而且在code应用内部跳转多次 情况都回如上所述.就是说一但发生session不同情况,以后再code 应用内部自己跳转session也会每次从新创建.
不明白问什么 ,请指教.




...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuracn 2005-11-28
  • 打赏
  • 举报
回复
看错了,不好意思
kuracn 2005-11-28
  • 打赏
  • 举报
回复
<a href="http://10.1.66.218:8080/code/interface.do?username=test&password=test">添加人员</a>
------------------
你上面用的是绝对路径,这会导致session失效,用相对路径吧

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧