点击验证码无刷新重新加载验证码图片

   生成验证码图片的image.jsp:

Java代码   收藏代码
  1. <%@page contentType="image/jpeg;charset=utf-8"%>  
  2. <%@page import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" %>  
  3. <%@ page import="java.io.OutputStream" %>  
  4. <html>  
  5.  <body>  
  6.   <%!   
  7.    Color getRandColor(int fc,int bc)  
  8.    {  
  9.     Random rd=new Random();  
  10.     if(fc>255) fc=255;  
  11.     if(bc>255) bc=255;  
  12.     int red=fc+rd.nextInt(bc-fc);  
  13.     int green=fc+rd.nextInt(bc-fc);  
  14.     int blue=fc+rd.nextInt(bc-fc);  
  15.     return new Color(red,green,blue);  
  16.    }  
  17.    %>  
  18.    <%   
  19.     Random r=new Random();  
  20.     response.addHeader("Pragma","No-cache");  
  21.     response.addHeader("Cache-Control","no-cache");  
  22.     response.addDateHeader("expires",0);     
  23.     int width=90;  
  24.     int height=23;  
  25.    BufferedImage pic=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);  
  26.    Graphics gc=pic.getGraphics();  
  27.    gc.setColor(getRandColor(200,250));  
  28.    gc.fillRect(0,0,width,height);  
  29.    String[] rNum ={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f",  
  30.       "g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w",  
  31.       "x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N",  
  32.       "O","P","Q","R","S","T","U","V","W","X","Y","Z"};  
  33.    int[] style = {Font.PLAIN,Font.BOLD,Font.ITALIC,Font.PLAIN+Font.BOLD,  
  34.      Font.BOLD+Font.ITALIC,Font.PLAIN+Font.ITALIC,Font.PLAIN+Font.BOLD+Font.ITALIC};  
  35.    gc.setColor(Color.WHITE);  
  36.    gc.drawLine(0,30,90,10);  
  37.    gc.setColor(getRandColor(160,200));  
  38.    for (int i=0;i<50;i++)      
  39.    {  
  40.     int x = r.nextInt(width);      
  41.     int y = r.nextInt(height);      
  42.     int xl = r.nextInt(10);      
  43.     int yl = r.nextInt(10);      
  44.     gc.drawLine(x,y,x+xl,y+yl);      
  45.    }  
  46.    gc.setColor(getRandColor(60,150));  
  47.    String rt = "";  
  48.    for(int i=0;i<4;i++){  
  49.     String temp = rNum[r.nextInt(62)];  
  50.     rt = rt+temp;  
  51.     gc.setFont(new Font("Times New Roman",style[r.nextInt(7)],15));  
  52.     gc.drawString(temp,5+i*15+r.nextInt(10),10+r.nextInt(10));  
  53.    }  
  54.    gc.dispose();  
  55.    session.setAttribute("randNum",rt);     
  56.    OutputStream os=response.getOutputStream();  
  57.    ImageIO.write(pic,"JPEG",os);  
  58.    System.out.println("当前验证码为:"+session.getAttribute("randNum"));  
  59.    os.flush();  
  60.    os.close();  
  61.    os=null;  
  62.    response.flushBuffer();  
  63.    out.clear();  
  64.    out = pageContext.pushBody();  
  65.     %>  
  66.  </body>  
  67. </html>  

实现无刷新重新加载步骤: 

1.在需要使用验证码的网页文件头部加上js代码:

写道
<script language="JavaScript"> 
function reloadcode(){ 
var verify=document.getElementById('safecode'); 
verify.setAttribute('src','image.jsp?'+Math.random()); 
//这里必须加入随机数不然地址相同无法重新加载 

</script> 

 

2.然后再验证码图片里面写onclick呼出上面的函数重新加载:

  

写道
<img src="image.jsp" id="safecode" border="0" οnclick="reloadcode()" 
style="cursor:hand;padding:2px 8px 0pt 3px;" /> 

3.两个文件在同一目录下,点击图片即可实现验证码重新加载

 

参考:http://zhidao.baidu.com/question/97875728.html
         http://www.itwis.com/html/programme/javascript/20080416/1296.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值