JQuery+Struts2生成验证码

-- 用于生成验证码

创新互联建站专注于耿马网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供耿马营销型网站建设,耿马网站制作、耿马网页设计、耿马网站官网定制、成都小程序开发服务,打造耿马网络公司原创品牌,更为您提供耿马网站排名全网营销落地服务。

  1. public class RandomNumUtil { 
  2.  
  3.     private ByteArrayInputStream p_w_picpath;// 图像 
  4.  
  5.     private String str;// 验证码 
  6.  
  7.     public RandomNumUtil() { 
  8.         init(); 
  9.     } 
  10.  
  11.     private void init() { 
  12.         // 在内存中创建图象 
  13.         int width = 85, height = 20; 
  14.         BufferedImage p_w_picpath = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); 
  15.          
  16.         // 获取图形上下文 
  17.         Graphics g = p_w_picpath.getGraphics(); 
  18.          
  19.         // 生成随机类 
  20.         Random random = new Random(); 
  21.          
  22.         // 设定背景色 
  23.         g.setColor(getRandColor(200, 250)); 
  24.         g.fillRect(0, 0, width, height); 
  25.          
  26.         // 设定字体 
  27.         g.setFont(new Font("Times New Roman", Font.PLAIN, 12)); 
  28.          
  29.         // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 
  30.         g.setColor(getRandColor(160, 200)); 
  31.         for (int i = 0; i < 155; i++) { 
  32.             int x = random.nextInt(width); 
  33.             int y = random.nextInt(height); 
  34.             int xl = random.nextInt(12); 
  35.             int yl = random.nextInt(12); 
  36.             g.drawLine(x, y, x + xl, y + yl); 
  37.         } 
  38.         // 取随机产生的认证码(6位数字) 
  39.         String sRand = ""; 
  40.         for (int i = 0; i < 6; i++) { 
  41.             String rand = getVerify(random.nextInt(3)); 
  42.             sRand += rand; 
  43.             // 将认证码显示到图象中 
  44.             g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110))); 
  45.             // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 
  46.             g.drawString(rand, 13 * i + 6, random.nextInt(10) + 10); 
  47.         } 
  48.         // 赋值验证码 
  49.         this.str = sRand; 
  50.  
  51.         // 图象生效 
  52.         g.dispose(); 
  53.         ByteArrayInputStream input = null; 
  54.         ByteArrayOutputStream output = new ByteArrayOutputStream(); 
  55.         try { 
  56.             ImageOutputStream p_w_picpathOut = ImageIO.createImageOutputStream(output); 
  57.             ImageIO.write(p_w_picpath, "JPEG", p_w_picpathOut); 
  58.             p_w_picpathOut.close(); 
  59.             input = new ByteArrayInputStream(output.toByteArray()); 
  60.         } catch (Exception e) { 
  61.             System.out.println("验证码图片产生出现错误:" + e.toString()); 
  62.         } 
  63.  
  64.         this.p_w_picpath = input;/* 赋值图像 */ 
  65.     } 
  66.  
  67.      /* 随机产生颜色 */   
  68.     private Color getRandColor(int fc, int bc) { 
  69.         Random random = new Random(); 
  70.         if (fc > 255) 
  71.             fc = 255; 
  72.         if (bc > 255) 
  73.             bc = 255; 
  74.         int r = fc + random.nextInt(bc - fc); 
  75.         int g = fc + random.nextInt(bc - fc); 
  76.         int b = fc + random.nextInt(bc - fc); 
  77.         return new Color(r, g, b); 
  78.     } 
  79.      
  80.     /** 
  81.      * 生成验证码 
  82.      * @param i 0为小写字母  
  83.      * 1 为大写字母 
  84.      * 2为普通数字 
  85.      * @return 
  86.      */ 
  87.     private String getVerify(int i){ 
  88.         String str = ""; 
  89.         if(i == 0){ 
  90.             char c = 'a'; 
  91.             c=(char)(c+(int)(Math.random()*26)); 
  92.             str = c + ""; 
  93.         }else if(i == 1){ 
  94.             char c='A'; 
  95.             c=(char)(c+(int)(Math.random()*26)); 
  96.             str = c + ""; 
  97.         }else if(i == 2){ 
  98.             str = new Random().nextInt(10) + ""; 
  99.         } 
  100.         return str; 
  101.     } 
  102.  
  103.     public ByteArrayInputStream getImage() { 
  104.         return p_w_picpath; 
  105.     } 
  106.  
  107.     public void setImage(ByteArrayInputStream p_w_picpath) { 
  108.         this.p_w_picpath = p_w_picpath; 
  109.     } 
  110.  
  111.     public String getStr() { 
  112.         return str; 
  113.     } 
  114.  
  115.     public void setStr(String str) { 
  116.         this.str = str; 
  117.     } 

-- Struts2

  1. public class UtilAction extends ActionSupport { 
  2.  
  3.     private ByteArrayInputStream inputStream;  
  4.      
  5.     @Override 
  6.     public String execute() throws Exception { 
  7.         // TODO Auto-generated method stub 
  8.          RandomNumUtil rdnu = new RandomNumUtil();       
  9.             this.setInputStream(rdnu.getImage());//取得带有随机字符串的图片       
  10.             ActionContext.getContext().getSession().put("validateCode", rdnu.getStr());//取得随机字符串放入HttpSession  
  11.             return SUCCESS;   
  12.     } 
  13.  
  14.     public ByteArrayInputStream getInputStream() { 
  15.         return inputStream; 
  16.     } 
  17.  
  18.     public void setInputStream(ByteArrayInputStream inputStream) { 
  19.         this.inputStream = inputStream; 
  20.     } 

-- JQuery

  1. $(function() { 
  2.     $("#randomCode").attr("src","verify"); 
  3.     $("#refresh").click( 
  4.         function() { 
  5.             $("#randomCode").attr("src","verify"); 
  6.     }); 
  7. }) 

-- Struts2 xml配置

  1.  
  2.          
  3.               p_w_picpath/jpeg         
  4.               inputStream         
  5.            
  6.  

-- jsp页面

  1.  
  2.      
  3.     换张图片 
  4.  

--效果如图 

JQuery + Struts2 生成验证码

 

 


文章名称:JQuery+Struts2生成验证码
网页网址:http://pwwzsj.com/article/pogocc.html