【求教】servlet和Jsp中的取值为什么不同步?
我写了一个servlet和一个JSP页面,想要完成生成图片验证码(存在“randCheckCode”中)以及验证所输入的验证码是否正确。可是每次JSP上所取得的(String)session.getAttribute("randCheckCode")和在servlet中所取得的(String)session.getAttribute("randCheckCode")值不同步。
就是说每次用(String)session.getAttribute("randCheckCode")在JSP页面上输出的验证码不是当前图片中验证码的值,而是上一次图片的值;但是servlet中取到的值和当前图片值一样。所以,每次验证的时候,我只能输入上一次图片的值才正确
部分程序如下:
JSP:
......
function confirm(checkCode1,checkCode2){
if(checkCode1.value==""||checkCode1.value==null){
alert("请输入验证码!");
}else if(!(checkCode2.value==checkCode1.value)){
alert("验证码输入错误!请重新输入!");
}else{
alert("输入正确!");
}
}
......
<% String checkCode=(String)session.getAttribute("randCheckCode");%>
......
<input name="checkCode1" type="text" id="checkCode1" maxlength="4"/>
<input name="checkCode2" type="hidden" id="checkCode2" value="<%=checkCode %>">
<input type="button" value="提交" onClick="confirm(checkCode1,checkCode2)"/>
<%=(String)session.getAttribute("randCheckCode")%>//即此处值是上一次图片的值
<img src="PictureCheckCode" id="createCheckCode"/>
......
Servlet程序:
......
HttpSession session = request.getSession(true);
session.setAttribute("randCheckCode", sRand);
System.out.println(session.getAttribute("randCheckCode")); //此处输出的值是当前图片值
......
------解决方案-------------------- session 要实时变动值。。。..可以么?
------解决方案--------------------不知道你是怎么从servlet把验证码传递到jsp的。
这个验证码的生成最好用异步请求来做,ajax。
------解决方案--------------------在页面上请求图像,不要把图像传到servlet中
------解决方案--------------------我也保存了 也是异步的访问 也就是不一样