初学jsp,我做jsp程序用到javascript时遇到一个非常有趣的情况,不知道是不是bug?大家帮测试一下

magicsnake 2004-12-22 05:31:19
这个东西花了我一天半时间才从代码堆中发现问题之所在,我把他简化成下面4各文件:
test1.jsp
<%
String test2=(String)session.getAttribute("test");
out.print(test2+":"+session.getId()+"<br>");
%>
<form name="Form1" method="post" action="test3.jsp" id="Form1">
<input type='submit' id='t'>
</form>

test3.jsp
<%
session.removeAttribute("test");
session.setAttribute("test","cc");
String test2=(String)session.getAttribute("test");
out.print(test2+":"+session.getId()+"<br>");
response.sendRedirect ("test2.jsp");
%>
<a href='test2.jsp'>测试</a>

test2.jsp
<%
String test2=(String)session.getAttribute("test");
out.print(test2+":"+session.getId()+"<br>");
%>
<SCRIPT>
document.write("<div><table><tr><td>这里是测试</td><td><img src='' width='1' ></td></tr></table></div>");
</SCRIPT>
<%
test2=(String)session.getAttribute("test");
out.print(test2+":"+session.getId()+"<br>");
%>
<a href='test4.jsp'>测试</a>

test4.jsp
<%
String test2=(String)session.getAttribute("test");
out.print(test2+":"+session.getId()+"<br>");
%>
<a href='test3.jsp'>测试</a>


首先调用test1.jsp,给session的参数test赋值为'bb'
然后点击提交按钮,test3.jsp重新给session的参数test赋值'cc',同时跳转到test2.jsp,
这时候在test2.jsp中看到session参数test的值是'cc',很正常.
但是你通过连接转到test4.jsp你会发现session参数test的值恢复成了'bb'
很奇怪的现象.
最后我发现问题出在test2.jsp中的那段javascritp的代码,只要document.write中调用了<img src=''>,当src为空的时候就会将session重置,src不为空的时候是正常的.

有没有人遇到过这种情况??
我的配置是tomcat5.0.25+j2sdk1.4.2
...全文
151 点赞 收藏 12
写回复
12 条回复
magicsnake 2004年12月23日
我的现在就是这样设置的,各位可以在自己的环境用上面的文件试试看有没有这种情况?
回复 点赞
boy 2004年12月23日
试试IE的工具/Internet选项/Internet临时文件/设置/设为每次访问此页时检查
回复 点赞
magicsnake 2004年12月23日
不是很复杂吧,文件内容我都写好了,你只用拷贝粘贴运行就OK啦
回复 点赞
以梦为马 2004年12月23日
什么乱七八糟的,做一个test要这样复杂吗?

说实话,我没耐心看。
回复 点赞
junyi2003 2004年12月23日
应该不会吧?一个是客户端的脚本,怎么能够影响到服务端呢?
回复 点赞
magicsnake 2004年12月23日
不一定是通过javascript啦,直接写html代码<img src='' >都会重置session,是不是我的tomcat有问题?
回复 点赞
magicsnake 2004年12月23日
应该不会跟名字有关,我原来程序里的各种文件名称参数名称和这里的完全不一样,可以在别的tomcat版本试试看有没有这种情况??
回复 点赞
毛毛雨中漫步 2004年12月23日
我已经测试过了,没有你说的事情,显示的都是cc,我的tomcat是jakarta-tomcat-5.0.28版的和jdk应该没有关系吧,我的jdk是j2sdk1.4.2
回复 点赞
magicsnake 2004年12月23日
to dadunqingwa(打盹的青蛙)
哦,那就奇怪了,难道是我的IE或者tomcat的问题?你的tomcat和jdk的版本是?

test3.jsp是过了,只是有这一句
response.sendRedirect ("test2.jsp");
直接跳到了test2.jsp,test3.jsp的目的本来就是重设session的值
回复 点赞
dadunqingwa 2004年12月23日
按你的代码 我走 却一直从test1转到test2 再转到test4
无法转到test3
但session是不变的 都是cc
回复 点赞
speedingman 2004年12月22日
会不会跟名字有关系?
回复 点赞
magicsnake 2004年12月22日
顶一下
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告