`
mimang2007110
  • 浏览: 237378 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JAVA验证码的实现【转】

阅读更多
思路:



做验证码其实就是在画图,我们可以把它的步骤比如成如下的几个动作: 

1.画出一个矩形,用做底色这个矩形大小也是验证码的底色. 
2.画出若干条干扰线. 
3.画字符.比如验证码有四个,那么就是要画四个字符,这个字符当然是可以随机的,每画一个字符我们就用一个StringBuffer来接连保存,画完后把这个StringBuffer对象存到session中,最后以图片的形式显示这个JSP页面. 

方法: 


先要设置页面的PAGE属性:

<%@ page language="java" contentType="image/jpg;charset=gb2312" %>

我们在这里先写一个产生随机颜色的方法:

Color getRandColor(int min,int max){   //随机产生指定区域内的RGB颜色

  Random random1=new Random();

  if(min>=255)min=255;

  if(max>=255)max=255;

  int r=min+random1.nextInt(max-min);

  int g=min+random1.nextInt(max-min);

  int b=min+random1.nextInt(max-min);

  return new Color(r,g,b);

 }

//禁止页面缓冲

  response.setHeader("Pragma","No-cache");

 response.setHeader("Cache-Control","no-cache");

 response.setDateHeader("Expires",0);

 //在缓存中创建图形对象,然后输出

 int width=60,height=20;  //输出图片的大小

 BufferedImage buff=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);  //指定缓冲的图片和颜色结构

 Graphics g=buff.getGraphics();   //得到绘图对象

利用graphics对象我们就可以画图了:

矩形:

g.setColor(getRandColor(200,250));

 g.fillRect(0,0,width,height);

干扰线:(循环的画出细小的线条)

for(int i=1;i<=30;i++){

  int x=rand.nextInt(width);  //线条的起始位置

  int y=rand.nextInt(height);

  int tx=rand.nextInt(12);

  int ty=rand.nextInt(12);

  g.drawLine(x,y,x+tx,y+ty);

 }

验证码:

String coding="";  //保存得到的验证码字符串

 for(int i=0;i<4;i++){

  String temp=String.valueOf(rand.nextInt(10));  //0-9的数字

  coding+=temp;

  //显示验证码,20-140色段

  g.setColor(getRandColor(20,140));

  g.drawString(temp,13*i+6,16);

 }

 //信息存入session

 session.setAttribute("code",coding);

清空缓存区:(这一步非常重要,不然服务器会报错误)

g.dispose();

 ServletOutputStream sos=response.getOutputStream();

 ImageIO.write(buff,"jpeg",sos);

 sos.flush();  //强行将缓冲区的内容输入到页面

 sos.close();

 sos=null;

 response.flushBuffer();

 out.clear();

 //Return a new BodyContent object, save the current "out" JspWriter, and update the value of the "out" attribute in the page scope attribute namespace of the PageContext

 out=pageContext.pushBody(); 

 

分享到:
评论

相关推荐

    java实现滑动验证码

    java实现滑动验证码

    Java验证码实现源码

    在提供的压缩包文件"Java验证码实现"中,可能包含了实现以上步骤的Java源代码文件,包括主类、图像处理类和可能的配置文件。通过学习和理解这些代码,你可以进一步掌握Java验证码的实现细节,并将其应用到自己的项目...

    JAVA验证码原理及实现

    在提供的`VerificationCode.java`文件中,可能包含了以上所述的验证码实现逻辑。通过阅读源码,我们可以深入了解如何在JAVA中将这些步骤整合到一个完整的验证码生成器中。 总的来说,JAVA验证码的实现结合了图像...

    Java验证码的实现

    总的来说,Java验证码的实现涉及到Java图形处理、Web编程以及安全策略等多个方面的知识,是Java Web开发中一个实用且重要的技能。通过实践,你可以更好地理解和掌握这些技术,并能根据实际需求进行扩展和优化。

    java实现验证码

    在Java中实现验证码涉及到图像处理、随机数生成、字体操作等多个方面的知识。本文将深入探讨如何使用Java来创建一个简单的图形验证码。 首先,我们需要了解验证码的基本原理。验证码通常包含一串随机生成的字符,...

    java-验证码识别-验证码破解

    Java作为广泛应用的编程语言,也提供了多种方法来实现验证码识别。在这个“java-验证码识别-验证码破解”的主题中,我们将深入探讨如何使用Java进行验证码识别,特别是通过Tess4J库进行OCR(光学字符识别)。 ...

    Java验证码框架.

    Java验证码框架.可实现多种验证很强大

    JAVA验证码的实现

    在JAVA中实现验证码,主要涉及以下几个关键知识点: 1. **随机数生成**:验证码通常由一组随机字符组成,这些字符可以是字母、数字或者特殊字符。在JAVA中,可以使用`java.util.Random`类来生成随机数,然后映射到...

    详细介绍Java阿里云的短信验证码实现

    Java阿里云短信验证码实现 Java阿里云短信验证码实现是指通过阿里云短信服务平台发送短信验证码的实现,以下是该实现的详细介绍。 登录阿里云开放平台 在实现Java阿里云短信验证码之前,需要首先登录阿里云开放...

    java验证码实现

    二、Java验证码实现步骤 1. **字符生成**:首先,我们需要生成一串随机字符。可以使用`java.util.Random`类配合字符数组来实现。比如,我们可以选择一个包含大小写字母和数字的字符集,生成指定长度的字符串。 ```...

    java实现验证码代码

    以下是一个简单的Java验证码实现的关键步骤: 1. **生成随机字符序列**:首先,我们需要创建一个包含可能字符的数组或集合,然后通过随机数生成器选择一定数量的字符组合成验证码。例如,可以使用`Random`类和`...

    Java实现点击文字验证码与拖动/滑动图片验证码(源码+demo+单元测试+实现思路)

    3.1.JAVA掌握AWT的BufferedImage、Graphics2D、Font;Redis;图片生成随机位置 随机中文文字、随机抠图、拼图都只需要用到BufferedImage和Graphics2D。 3.2.前端熟悉点击事件,根据点击事件的坐标位置、图片的位置...

    JAVA实现验证码(完整代码)

    JAVA 实现验证码(完整代码) JAVA 实现验证码是一种常见的验证机制,用于防止机器人和自动程序的攻击。下面是关于 JAVA 实现验证码的详细知识点: 验证码的概念和作用 验证码是一种challenge-response测试,用于...

    java验证码的源码

    在实际使用中,Java验证码的实现步骤大致如下: 1. 引入Kaptcha库,例如通过Maven或Gradle将其添加为依赖。 2. 配置Kaptcha生成器,设置验证码的样式、长度、字体等属性。 3. 在需要生成验证码的地方,调用Kaptcha...

    验证码(JAVA实现)

    验证码(JAVA实现)验证码(JAVA实现)验证码(JAVA实现)验证码(JAVA实现)

    纯Java验证码工具类

    "纯Java验证码工具类" 提供了一种简便的方法来生成这种安全机制,无需依赖其他语言或库。这个工具类可以被轻松地集成到任何Java项目中,为你的应用程序添加一道防线。 验证码生成通常包括以下几个关键步骤: 1. **...

    java-滑动验证码实现

    springboot框架实现滑动验证码,下载后可直接运行,http://localhost:8899/index.html启动后直接访问验证,工具方法可以直接拿出使用与自身项目代码结合使用,本人前端能力有限,只实现基本的滑动验证,关于其他效果...

    Java简单验证码识别(附源码)

    总的来说,Java验证码识别不仅加深了对图像处理和模式识别的理解,也为后续学习更高级的机器学习和深度学习技术打下了基础。通过实践这个项目,你可以掌握实际问题的解决思路,提高编程能力,并且能够灵活运用所学...

    Java使用OCR技术识别验证码实现自动化登陆方法

    在本篇文章里小编给大家分享的是关于Java 如何使用 OCR 技术识别验证码实现自动化登陆的相关知识点内容,需要的朋友们学习下。

    JAVA实现随机图片验证码简单方法

    JAVA实现随机图片验证码简单方法.rtf

Global site tag (gtag.js) - Google Analytics