欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP验证码刷新无效问题解决

程序员文章站 2022-05-18 14:42:27
在form表单中,如下 [html]
    

在form表单中,如下

[html]
<form name="infof"> 
   <font color="red">姓名:</font> <input name="name" type="text"></input><br> 
   <font color="red">密码:</font> <input name="password" type="password"></input><br> 
   验证码:<input name="validate" type="text"> 
   <img name="vali" border=0 src="validate.jsp" onclick="refresh()"/> 
   <a href="JavaScript:refresh()">看不清,换一张</a> 
   <br> 
   <input type="button" onclick="login()" value="登录"> <input 
    type="reset"> 
  </form> 

在验证码图片中,调用的是validate.jsp,用于生成验证码图片。这个jsp中的内容如下:

[html]
<body> 
    <% 
        response.setHeader("Pragma", "No-cache"); 
        response.setHeader("Cache-Control", "no-cache"); 
        response.setDateHeader("Expires", 0); 
        BufferedImage image = new BufferedImage(75, 30, 
                BufferedImage.TYPE_INT_RGB); 
        Graphics g = image.getGraphics(); 
        g.setColor(Color.gray); 
        g.fillRect(0, 0, 75, 30); 
 
        String randStr = String.valueOf(new Random().nextInt(8999) + 1000); 
        session.setAttribute("randStr", randStr); 
 
        g.setColor(Color.black); 
        g.setFont(new Font("", Font.PLAIN, 20)); 
        g.drawString(randStr, 10, 20); 
        for (int i = 1; i <= 120; i++) { 
            int x = new Random().nextInt(75); 
            int y = new Random().nextInt(30); 
            g.setColor(Color.blue); 
            g.drawOval(x, y, 1, 1); 
        } 
        ImageIO.write(image, "JPEG", response.getOutputStream()); 
        out.clear(); 
        out = pageContext.pushBody(); 
         
    %> 
</body> 
好了,现在大头戏来了。

<img name="vali" border=0 src="validate.jsp" onclick="refresh()"/>
   <a href="JavaScript:refresh()">看不清,换一张</a>

中,无论是链接还是onclick方法,都是指到js中的一个方法。

具体如下:

[javascript]
<script type="text/javascript"> 
        function refresh(){ 
            infof.vali.src=""; 
            infof.vali.src="validate.jsp"; 
             
        } 
    </script> 

本来呢,infof.vali.src="";这条语句我是没有的。当我点击图片,或者点击链接的时候,我发现,validate.jsp都没有被调用。无论我怎么设置缓存设置(可能是我还没有设置到点上)

干脆,我自己想了个办法,我用这种方法 解决了刷新验证码无效的问题。

经过测试,链接和点击图片都可以~~~问题解决


摘自 MELEARNER的专栏