困多时的问题,请大侠们指点一下!

hyc_hover 2007-01-03 04:34:46
有一产生验证码rand.jsp页面:

// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.drawString(rand,11*i+1,12);
}

//session保存rand
session.setAttribute("rand",sRand);



登陆页面index.jsp:


<form action="<%=request.getContextPath()%>/login.do" name="loginform" method="post">

<td>用户:<input type=textbox name="username" value="" /></td>
<td>密码:<input type=password name="password" value="" /></td>
<td>验证码:<input type=textbox name="randt" value="" />
<img border=0 src="rand.jsp" ></td>

<td>
<input type=submit value="登陆" name="loginsub" >
<input type=reset value="重写" name="loginres" >
</td>

<%=session.getAttribute("rand") %>



为什么这里的session.getAttribute("rand") 的值 和 <img border=0 src="rand.jsp>的值显示出来的不一样呢? session.getAttribute("rand") 显示的是 <img border=0 src="rand.jsp>的前一个值,如果是第一次 session.getAttribute("rand") 显示的是null,而<img border=0 src="rand.jsp>却有值
但是在LoginAction中
session.getAttribute("rand");
String rand = (String)session.getAttribute("rand");
String randt= forms.getRandt() ;
if(randt.equals(rand))
{相等}
else{不等}
却是相等的,但是第一次填写的时候会提示不等,以后则是相等的了。

请教各位大侠,这是什么原因啊?应该怎么解决呢?
先谢谢了!
...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyc_hover 2007-01-05
  • 打赏
  • 举报
回复
不是吧

//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

写没写上面的代码 都是那样的哦
Sunny319 2007-01-05
  • 打赏
  • 举报
回复
禁用页面缓存,它每次显示的前一次缓存的值了!
hyc_hover 2007-01-05
  • 打赏
  • 举报
回复
自己顶
hhlovels 2007-01-05
  • 打赏
  • 举报
回复
也许上面的错了
应该是
String sRand="";
这句写在for里边看看
hhlovels 2007-01-05
  • 打赏
  • 举报
回复
这样写试试

for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
String sRand+=rand;
// 将认证码显示到图象中
g.drawString(rand,11*i+1,12);
}

//session保存rand
session.setAttribute("rand",sRand);
baobao28 2007-01-05
  • 打赏
  • 举报
回复
少缓存一次?

81,091

社区成员

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

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