`
xuehongliang
  • 浏览: 95156 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

用java生成验证码

    博客分类:
  • java
阅读更多

这是前些天闲着没事的时候做的一个验证码的程序,也参考了一些例子最近总结出来的.

java 代码
  1. public class Image extends HttpServlet {   
  2.   
  3.  /**  
  4.   *   
  5.   */  
  6.  private static final long serialVersionUID = 1L;   
  7.   
  8.  protected void processRequest(HttpServletRequest request,   
  9.    HttpServletResponse response) throws ServletException, IOException {   
  10.   
  11.   response.setContentType("image/jpeg");   
  12.   response.setHeader("Pragma""No-cache");   
  13.   response.setHeader("Cache-Control""no-cache");   
  14.   response.setDateHeader("Expires"0);   
  15.   HttpSession session = request.getSession();   
  16.   
  17.   int width = 60, height = 20;   
  18.   
  19.   BufferedImage image = new BufferedImage(width, height,   
  20.     BufferedImage.TYPE_INT_RGB);   
  21.   
  22.   // 获取图形上下文   
  23.   Graphics g = image.getGraphics();   
  24.   
  25.   // 生成随机类   
  26.   Random random = new Random();   
  27.   
  28.   // 设定背景色   
  29.   g.setColor(getRandColor(200250));   
  30.   g.fillRect(00, width, height);   
  31.   
  32.   // 设定字体   
  33.   g.setFont(new Font("Times New Roman", Font.PLAIN, 18));   
  34.   
  35.   // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到   
  36.   g.setColor(getRandColor(160200));   
  37.   for (int i = 0; i < 155; i++) {   
  38.    int x = random.nextInt(width);   
  39.    int y = random.nextInt(height);   
  40.    int xl = random.nextInt(12);   
  41.    int yl = random.nextInt(12);   
  42.    g.drawLine(x, y, x + xl, y + yl);   
  43.   }   
  44.   
  45.   // 取随机产生的认证码(4位数字)   
  46.   String sRand = "";   
  47.   for (int i = 0; i < 4; i++) {   
  48.    String rand = String.valueOf(random.nextInt(10));   
  49.    sRand += rand;   
  50.    // 将认证码显示到图象中   
  51.    g.setColor(new Color(20 + random.nextInt(110), 20 + random   
  52.      .nextInt(110), 20 + random.nextInt(110)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成   
  53.    g.drawString(rand, 13 * i + 616);   
  54.   }   
  55.   
  56.   // 将认证码存入SESSION   
  57.   session.setAttribute("rand", sRand);   
  58.   // 图象生效   
  59.   g.dispose();   
  60.   ServletOutputStream responseOutputStream = response.getOutputStream();   
  61.   // 输出图象到页面   
  62.   ImageIO.write(image, "JPEG", responseOutputStream);   
  63.   
  64.   // 以下关闭输入流!   
  65.   responseOutputStream.flush();   
  66.   responseOutputStream.close();   
  67.   
  68.  }   
  69.   
  70.  Color getRandColor(int fc, int bc) {   
  71.   // 给定范围获得随机颜色   
  72.   Random random = new Random();   
  73.   if (fc > 255)   
  74.    fc = 255;   
  75.   if (bc > 255)   
  76.    bc = 255;   
  77.   int r = fc + random.nextInt(bc - fc);   
  78.   int g = fc + random.nextInt(bc - fc);   
  79.   int b = fc + random.nextInt(bc - fc);   
  80.   return new Color(r, g, b);   
  81.  }   
  82.   
  83.  /**  
  84.   * Handles the HTTP GET method.  
  85.   *   
  86.   * @param request  
  87.   *            servlet request  
  88.   * @param response  
  89.   *            servlet response  
  90.   */  
  91.  protected void doGet(HttpServletRequest request,   
  92.    HttpServletResponse response) throws ServletException, IOException {   
  93.   processRequest(request, response);   
  94.  }   
  95.   
  96.  /**  
  97.   * Handles the HTTP POST method.  
  98.   *   
  99.   * @param request  
  100.   *            servlet request  
  101.   * @param response  
  102.   *            servlet response  
  103.   */  
  104.  protected void doPost(HttpServletRequest request,   
  105.    HttpServletResponse response) throws ServletException, IOException {   
  106.   processRequest(request, response);   
  107.  }   
  108.   
  109.  /**  
  110.   * Returns a short description of the servlet.  
  111.   */  
  112.  public String getServletInfo() {   
  113.   return "Short description";   
  114.  }   
  115.   
  116. }   
  117.   
分享到:
评论

相关推荐

    使用java生成验证码

    使用Java生成验证码的工具类,使用说明:http://blog.csdn.net/wqh8522/article/details/72791218

    java生成图片的验证码工具类及其使用

    java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...

    java生成验证码的参考资料(中英文验证码)

    总的来说,Java生成验证码是一个结合了数学随机性、图像处理和安全性考量的过程。通过学习和使用`kaptcha`或其他验证码生成库,开发者能够快速地在自己的项目中实现这一功能。同时,理解和实现验证码的生成也能加深...

    java生成验证码demo

    这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...

    用JAVA生成验证码的操作

    ### 使用Java生成验证码的深入解析 #### 知识点概览 在当今互联网时代,验证码作为网站和应用程序安全的重要组成部分,被广泛应用于用户登录、表单提交等场景中,以防止自动化工具的恶意操作。本文将详细介绍如何...

    java生成验证码源码包括彩色验证码

    java生成验证码源码包括彩色验证码 包括jsp生成验证码和彩色验证码

    java生成验证码代码

    在Java中生成验证码涉及到图像处理、随机数生成以及字符编码等多个知识点。以下将详细介绍如何在Java中创建一个能生成中文、英文和数字的验证码。 1. **随机数生成**:首先,我们需要生成随机的验证码字符。Java...

    java随机生成验证码

    验证码(CAPTCHA)是一种用于验证用户是否为人类的自动化测试技术。...以上就是使用Java生成验证码的基本流程和关键知识点。通过调整各种参数和细节,可以根据实际需求定制出更复杂、更难被机器识别的验证码系统。

    java生成随机验证码

    java生成随机验证码, 这是一个demo, eclipse项目,导入eclipse即可

    验证码生成工具类

    在Java中,生成验证码的步骤包括: 1. **设计验证码内容**:首先,我们需要创建一个包含随机字符或数字的字符串。可以使用`java.util.Random`类生成随机数,并结合字符数组生成随机字符串。为了增加难度,通常会...

    java生成图片验证码

    首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java环境中生成随机的、可读性较差的文本,并将其转化为图像的过程,以创建一个验证码。验证码通常由字母、数字或两者混合组成,设计的目的...

    java 生成图片验证码

    在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。

    Java生成图片验证码工具类源码

    该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。本源码包含了工具类源码及调用示例,可供开发者参考使用,集成到您的项目中。

    java生成验证码代码(工程)

    java生成验证码代码 主要:一个生成验证码的servlet,一个jsp页面,另外还需要配置下web.xml即可

    java 生成动态gif 验证码

    - **安全性**:可以考虑使用更复杂的算法生成验证码,如汉字、自定义图形等,提高机器识别的难度。 - **用户体验**:减少动画帧数,避免过于复杂的干扰元素,确保验证码清晰易读。 - **可配置性**:允许开发者...

    java生成的随机验证码

    验证码是网络应用中常见的一种安全机制,用于防止自动...总的来说,Java生成随机验证码的过程涵盖了随机数生成、字符串处理、图像处理等多个编程领域。通过合理的设计和实现,可以创建出既安全又用户友好的验证码系统。

    java生成验证码图片的文件已完成测试

    java生成验证码图片的文件已完成测试

    Java随机生成验证码图片

    Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~

    Java生成算数运算中文图片验证码

    源代码可能包括生成验证码的类、处理用户输入的控制器以及相关的配置文件。资源文件可能包含了用于绘制验证码的自定义字体,以显示中文字符。说明文档则详细解释了项目的用途、如何运行和使用示例,帮助开发者快速...

Global site tag (gtag.js) - Google Analytics