验证码

验证码

1.java类MakeCert 生成验证码

Java代码
  1. package com.certCode;  
  2.   
  3. import java.awt.Color;  
  4. import java.awt.Font;  
  5. import java.awt.Graphics;  
  6. import java.awt.image.BufferedImage;  
  7. import java.io.IOException;  
  8. import java.io.OutputStream;  
  9. import java.util.Random;  
  10.   
  11. import javax.imageio.ImageIO;  
  12.   
  13. /** 
  14.  * 生成验证图片 
  15.  * @author 郑平 
  16.  * 
  17.  */  
  18. public class MakeCert {  
  19.     //图片验证可能出现的字符  
  20.     private char mapTable[]={  
  21.     'a','b','c','d','e','f',  
  22.     'g','h','i','j','k','l',  
  23.     'm','n','o','p','q','r',  
  24.     's','t','u','v','w','x',  
  25.     'y','z','0','1','2','3',  
  26.     '4','5','6','7','8','9'};  
  27.     /** 
  28.      * 功能:生成彩色验证码图片 
  29.      * 参数width为生成图片的宽度,参数height为生成图片的高度,参数os为页面的输出流 
  30.      */  
  31.     public String getCertcode(int width,int height,OutputStream os) {  
  32.         if(width<=0){  
  33.             width = 60;  
  34.         }  
  35.         if(height<=0){  
  36.             height = 20;  
  37.         }  
  38.         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  
  39.         //获取图形上下文  
  40.         Graphics  g = image.getGraphics();  
  41.         //设置 背景颜色  
  42.         g.setColor(new Color(0xDCDCDC));  
  43.         g.fillRect(00, width, height);  
  44.         //画边框  
  45.         g.setColor(Color.black);  
  46.         g.drawRect(00, width-1, height-1);  
  47.         String strEnsure = "";  
  48.         for(int i=0;i<4;i++){  
  49.             //随机产生的验证码  
  50.             strEnsure += mapTable[(int)(mapTable.length*Math.random())];  
  51.         }  
  52.         System.out.println("strEnsure:"+strEnsure);  
  53.         //将验证码显示到图片上  
  54.         g.setFont(new Font("Atlantic Inline",Font.PLAIN,18));   
  55.         String str = strEnsure.substring(01);  
  56.         g.drawString(str, 817);  
  57.         str = strEnsure.substring(1,2);   
  58.         g.drawString(str,20,15);   
  59.         str = strEnsure.substring(2,3);  
  60.         g.drawString(str,35,18);     
  61.         str = strEnsure.substring(3,4);   
  62.         g.drawString(str,45,15);   
  63.         // 随机产生10个干扰点  
  64.         Random r = new Random();  
  65.         for(int i =0;i<10;i++){  
  66.             int x = r.nextInt(width);  
  67.             int y = r.nextInt(height);  
  68.             g.drawOval(x, y, 11);  
  69.         }  
  70.         // 释放图形上下文  
  71.         g.dispose();  
  72.         try {  
  73.             ImageIO.write(image, "JPEG", os);  
  74.         } catch (IOException e) {  
  75.             // TODO Auto-generated catch block'  
  76.             return "";  
  77.         }  
  78.         return strEnsure;  
  79.     }  
  80. }  

 2.makeCert.jsp jsp调用java类得到验证码 将生成的验证码存在session里面

Java代码
  1. <%@ page contentType="image/jpeg; charset=gb2312"  
  2.     pageEncoding="utf-8"%>  
  3.     <jsp:useBean id="image" scope="page" class="com.certCode.MakeCert"></jsp:useBean>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  8. <title>验证</title>  
  9. </head>  
  10. <body>  
  11.   <%  
  12.     String str=image.getCertcode(0,0,response.getOutputStream());  
  13.     session.setAttribute("certCode", str);   
  14.     out.clear();  
  15.     out = pageContext.pushBody();  
  16.    %>  
  17.   
  18. </body>  
  19. </html>  

 3.login.jsp 登录界面jsp

Java代码
  1. <%@ page language="java" contentType="text/html; charset=gb2312"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <script type="text/javascript">  
  7.     function reloadcode() {  
  8.         var s = document.getElementById("code");  
  9.         s.setAttribute('src','makeCert.jsp?it='+Math.random());  
  10.     }  
  11. </script>  
  12. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  13. <title>登录</title>  
  14. </head>  
  15. <body>  
  16. <form action="login">  
  17.     账号:<input type="text" id="id" name="id">  
  18.     验证码:<input type="text" id="certCode"name="certCode">  
  19.     <img alt="看不清楚,换一张" src="makeCert.jsp" id="code" οnclick="reloadcode()" style="cursor:pointer;">  
  20.     <input type="submit" value="确定">  
  21. </form>  
  22.   
  23. </body>  
  24. </html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值