VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 772|回复: 5

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

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-22 10:40:01 | 显示全部楼层 |阅读模式
有一产生验证码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{不等}
却是相等的,但是第一次填写的时候会提示不等,以后则是相等的了。

请教各位大侠,这是什么原因啊?应该怎么解决呢?
先谢谢了!
回复

使用道具 举报

0

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-9 19:00:02 | 显示全部楼层
禁用页面缓存,它每次显示的前一次缓存的值了!
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-5-22 19:30:01 | 显示全部楼层
不是吧

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

写没写上面的代码 都是那样的哦
回复

使用道具 举报

0

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-5-25 23:15:01 | 显示全部楼层
少缓存一次?
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-30 14:15:01 | 显示全部楼层
这样写试试

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);
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-5-30 17:00:01 | 显示全部楼层
也许上面的错了
应该是
String sRand="";
这句写在for里边看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表