初学jsp,我做jsp程序用到javascript时遇到一个非常有趣的情况,不知道是不是bug?大家帮测试一下
这个东西花了我一天半时间才从代码堆中发现问题之所在,我把他简化成下面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