`

java编写的验证码

    博客分类:
  • java
阅读更多
import java.awt.Color; 
  import java.awt.Font; 
  import java.awt.Graphics; 
  import java.awt.image.BufferedImage; 
  import java.io.IOException; 
  import java.util.Random; 
   
  import javax.imageio.ImageIO; 
  import javax.servlet.ServletException; 
  import javax.servlet.http.HttpServlet; 
  import javax.servlet.http.HttpServletRequest; 
  import javax.servlet.http.HttpServletResponse; 
  import javax.servlet.http.HttpSession; 
   
  @SuppressWarnings("serial") 
  public class CheckCodeImg extends HttpServlet 
  { 
   private Font mFont = new Font("Arial Black", Font.PLAIN, 16); 
   
   public void init() throws ServletException 
   { 
   super.init(); 
   } 
   Color getRandColor(int fc,int bc) 
   { 
   Random random = new Random(); 
   if(fc>255) fc=255; 
   if(bc>255) bc=255; 
   int r=fc+random.nextInt(bc-fc); 
   int g=fc+random.nextInt(bc-fc); 
   int b=fc+random.nextInt(bc-fc); 
   return new Color(r,g,b); 
   System.out.println("http://www.ewuji.net/");
   } 
   
   private String getRandomChar() 
   { 
   int rand = (int)Math.round(Math.random() * 2); 
   long itmp = 0; 
   char ctmp = ’\u0000’; 
   switch (rand) 
   { 
   case 1: 
   itmp = Math.round(Math.random() * 25 + 65); 
   ctmp = (char)itmp; 
   return String.valueOf(ctmp); 
   case 2: 
   itmp = Math.round(Math.random() * 25 + 97); 
   ctmp = (char)itmp; 
   return String.valueOf(ctmp); 
   default : 
   itmp = Math.round(Math.random() * 9); 
   return String.valueOf(itmp); 
   } 
   } 
   public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
   { 
   response.setHeader("Pragma","No-cache"); 
   response.setHeader("Cache-Control","no-cache"); 
   response.setDateHeader("Expires", 0); 
   response.setContentType("image/jpeg"); 
   
   int width=150, height=30; 
   BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
   
   Graphics g = image.getGraphics(); 
   Random random = new Random(); 
   g.setColor(getRandColor(200,250)); 
   g.fillRect(1, 1, width-1, height-1); 
   g.setColor(new Color(102,102,102)); 
   g.drawRect(0, 0, width-1, height-1); 
   g.setFont(mFont); 
   
   g.setColor(getRandColor(160,200)); 
   for (int i=0;i<155;i++) 
   { 
   int x = random.nextInt(width - 1); 
   int y = random.nextInt(height - 1); 
   int xl = random.nextInt(6) + 1; 
   int yl = random.nextInt(12) + 1; 
   g.drawLine(x,y,x + xl,y + yl); 
   } 
   for (int i = 0;i < 70;i++) 
   { 
   int x = random.nextInt(width - 1); 
   int y = random.nextInt(height - 1); 
   int xl = random.nextInt(12) + 1; 
   int yl = random.nextInt(6) + 1; 
   g.drawLine(x,y,x - xl,y - yl); 
   } 
   
   String sRand=""; 
   for (int i=0;i<6;i++) 
   { 
   String tmp = getRandomChar(); 
   sRand += tmp; 
   g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); 
   g.drawString(tmp,15*i+10,15); 
   } 
   
   HttpSession session = request.getSession(true); 
   session.setAttribute("rand",sRand); 
   g.dispose(); 
   ImageIO.write(image, "JPEG", response.getOutputStream()); 
   } 
   
  }
分享到:
评论

相关推荐

    java编写验证码

    在小编知道的验证码的作用有两个,一是在注册的时候防止批量注册,二是防止有所企图的人暴力破解系统。

    用JAVA代码编写验证码

    用JAVA语言写的验证码图片

    Java编写图片验证码(手动下载文件+手绘验证码)

    总结,Java编写图片验证码涉及了网络I/O、图像处理、随机数生成、颜色操作、字体设置等多个方面,是Web开发中实现用户安全验证的重要手段。对于初学者,这是一个很好的练习项目,可以加深对Java图形和网络编程的理解...

    用java编写的四位随机的验证码,包括数字跟字母

    用java编写的四位随机的验证码,包括数字跟字母 简单易懂

    验证码 java编写的验证码 已经写好,只需要调用即可

    本项目提供的代码已经实现了Java编写的验证码功能,使用者可以直接调用,无需从头编写。 首先,我们来看`ImgFontByte.java`,这个文件可能包含了生成验证码图片的逻辑。在Java中,通常我们会使用`java.awt`和`javax...

    用java编写的验证码识别

    在本项目中,我们关注的是使用Java编程语言实现的一种特殊方法——滴水算法,来解决验证码识别问题。 滴水算法是一种模拟自然界水滴下落过程的图像处理技术,它在验证码识别中的应用主要是通过模拟水滴对图像进行...

    java短信验证码、邮件发送

    - 编写发送短信的代码,生成验证码并存储,然后调用客户端发送短信到指定手机号。 - 用户输入验证码后,验证其有效性。 二、Java邮件发送 1. **邮件发送原理**:JavaMail API是Java用于发送邮件的标准库,它支持...

    12306验证码JAVA DEMO

    7. 单元测试:编写测试用例,确保代码在各种情况下都能正确地处理验证码,例如不同类型的验证码、不同的字符组合等。 8. 并行处理:如果需要批量处理大量验证码,可以考虑使用多线程或异步处理来提高效率。 12306...

    JAVA EasyCode验证码,WEB2.0 图片效果验证码【原创】

    1. **JAVA基础**:该验证码系统是用JAVA语言编写的,这意味着它利用了JAVA的面向对象特性,类库丰富,以及跨平台的优势。JAVA提供了大量的标准库,如AWT和Swing,用于图形用户界面的构建,可能被用来生成验证码图像...

    验证码的生成工具 Java

    本项目提供的是一款用Java编写的验证码生成工具,包括showyanzhengma.exe可执行文件、yanzhengma6(50).exe以及yanzhengma6(50).jar文件。 验证码的生成通常包含以下几个关键步骤: 1. **随机字符生成**:验证码...

    验证码生成工具类

    这个工具类是用Java语言编写的,因此我们可以深入探讨一下Java验证码生成的相关技术和实现。 验证码(CAPTCHA,Completely Automated Public Turing test to tell Computers and Humans Apart)的主要目标是区分...

    java jcaptcha 验证码 生成

    例如,你可以编写自己的`Generator`实现,生成具有特定风格的验证码,或者实现更复杂的验证逻辑。 总结,Java JCaptcha验证码框架为开发者提供了一种高效且易于集成的验证码解决方案。通过理解和使用JCaptcha,不仅...

    java实现给手机发送验证码

    8. **异常处理**:在编写代码时,应充分考虑可能的异常情况,如网络故障、API调用失败、验证码过期等,并提供相应的错误信息反馈给用户。 9. **测试**:最后,通过单元测试和集成测试确保验证码发送功能的正确性。...

    java验证码及刷新

    JSP是Java的一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,使得网页能够动态地生成内容。在这个验证码项目中,JSP可能被用来创建展示验证码的HTML页面。页面上会有一个图片标签,其src属性指向...

    JAVA编写最简单的登录验证码

    本文将详细讲解如何利用Java语言和其内置的awt包,来实现一个简单的登录验证码功能。这个过程涵盖了从创建图像缓冲区、制图、添加干扰纹、设置验证码,直到在网页上展示的各个步骤。 首先,我们要做的是创建一个...

    java验证码(算术型和字符型)和生成和解析代码,yanzhengma.zip

    对于算术型验证码,我们需要编写一个类来生成随机的算术问题,并将其与答案一起保存。在用户提交答案时,验证答案是否正确,如果正确则通过验证码验证,否则提示错误。 字符型验证码的生成相对简单,可以直接利用...

    java 验证码编写

    java 验证码编写

Global site tag (gtag.js) - Google Analytics