`

Servlet生成彩色验证码

    博客分类:
  • java
阅读更多

 

很早以前用的,为了防止忘记,做个记录

java 代码
  1. import java.io.IOException;   
  2. import javax.servlet.ServletException;   
  3. import javax.servlet.ServletOutputStream;   
  4.   
  5. import javax.servlet.http.HttpServlet;   
  6. import javax.servlet.http.HttpServletRequest;   
  7. import javax.servlet.http.HttpServletResponse;   
  8. import javax.servlet.http.HttpSession;   
  9.   
  10. import com.sun.image.codec.jpeg.JPEGCodec;   
  11. import com.sun.image.codec.jpeg.JPEGImageEncoder;   
  12.   
  13. import java.awt.*;   
  14. import java.awt.image.*;   
  15. import java.util.*;   
  16.   
  17. public class ImageServlet   
  18.     extends HttpServlet {   
  19.   
  20.   public void doGet(HttpServletRequest request, HttpServletResponse response) throws  
  21.       ServletException, IOException {   
  22.     response.reset();   
  23.     response.setContentType("image/jpeg");   
  24.     response.setHeader("Pragma""No-cache");   
  25.     response.setHeader("Cache-Control""no-cache");   
  26.     response.setDateHeader("Expires"0);   
  27.   
  28. //在内存中创建图象   
  29.     int width = 58, height = 18;   
  30.     BufferedImage image = new BufferedImage(width, height,   
  31.                                             BufferedImage.TYPE_INT_RGB);   
  32.   
  33. //获取图形上下文   
  34.     Graphics g = image.getGraphics();   
  35.   
  36. //生成随机类   
  37.     Random random = new Random();   
  38.   
  39. //设定背景色   
  40.     g.setColor(new Color(201 + random.nextInt(50), 201 + random.nextInt(50),   
  41.                          201 + random.nextInt(50)));   
  42.     g.fillRect(00, width, height);   
  43.   
  44. //设定字体   
  45.     g.setFont(new Font("Times new Roman", Font.PLAIN, 18));   
  46.   
  47. //画边框   
  48. //g.setColor(new Color());   
  49. //g.drawRect(0,0,width-1,height-1);   
  50.   
  51. //随机产生155条干扰线,使图象中的认证码不易被其它程序探测到   
  52.     g.setColor(new Color(160 + random.nextInt(41), 160 + random.nextInt(41),   
  53.                          160 + random.nextInt(41)));   
  54.     for (int i = 0; i < 155; i++) {   
  55.       int x = random.nextInt(width);   
  56.       int y = random.nextInt(height);   
  57.       int xl = random.nextInt(12);   
  58.       int yl = random.nextInt(12);   
  59.       g.drawLine(x, y, x + xl, y + yl);   
  60.     }   
  61.   
  62. //取随机产生的认证码(4位数字)   
  63.     String sRand = "";   
  64.     for (int i = 0; i < 4; i++) {   
  65.       String rand = String.valueOf(random.nextInt(10));   
  66.       sRand += rand;   
  67.   
  68. //将认证码显示到图象中   
  69.       g.setColor(new Color(20 + random.nextInt(111), 20 + random.nextInt(111),   
  70.                            20 + random.nextInt(111)));   
  71.   
  72. //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成   
  73.       g.drawString(rand, 13 * i + 616);   
  74.     }   
  75.     HttpSession session = null;   
  76.   
  77.     session = request.getSession(true);   
  78.   
  79.     //将认证码存入SESSION   
  80.     session.setAttribute("rand", sRand);   
  81.   
  82. //图象生效   
  83.     g.dispose();   
  84.   
  85. //输出图象到页面   
  86. //ImageIO.write(image, "JPEG", resp.getOutputStream());   
  87. //response.setContentType("image/jpeg");   
  88.     ServletOutputStream out = response.getOutputStream();   
  89.     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);   
  90.     encoder.encode(image);   
  91.     out.close();   
  92.   }   
  93. }   
  94.   
分享到:
评论

相关推荐

    JSP自动生成彩色验证码

    本项目重点在于使用JSP(Java Server Pages)技术自动生成彩色验证码,为用户提供一个视觉上更友好的验证体验。下面我们将深入探讨这个主题。 首先,验证码通常由一组随机字符组成,这些字符可以是数字、字母或其他...

    java彩色验证码的生成

    总之,Java生成彩色验证码涉及图像处理、随机数生成、颜色操作以及安全性设计等多个方面,是Web开发中一个有趣的实践案例。通过不断优化验证码的复杂度和安全性,我们可以有效防止自动化攻击,保护用户的账户安全。

    JSP为登录生成彩色验证码

    **JSP为登录生成彩色验证码** 在Web应用中,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,例如批量注册、频繁登录等。本篇将详细介绍如何在JSP环境下创建一个彩色的验证码,以提高...

    java jsp 生成彩色验证码+验证功能代码,可直接运行,没有数据库

    在这个提供的压缩包中,包含的是一个基于Java实现的彩色验证码生成与验证的功能代码,适用于网页安全验证,防止自动机器人或恶意攻击。验证码通常由随机字符组成,目的是确保用户是人类而非自动化程序。 1. **彩色...

    JSP生成彩色验证码程序例子

    在这个"JSP生成彩色验证码程序例子"中,我们将深入探讨如何利用JSP实现一个功能丰富的彩色验证码生成器。 验证码的主要目的是为了防止自动机器人或恶意脚本进行非法操作,例如防止垃圾邮件、注册机等。它通过显示一...

    JSP彩色验证码的实现

    在类中定义了图像的宽度和高度,并在`service`方法中初始化了一个`BufferedImage`对象,用以存储生成的彩色验证码图片。 ```java private int width = 60; private int height = 20; protected void service...

    登录注册彩色验证码刷新

    彩色验证码: 1.原理:随机生成一个包含字符串的图片,用户读取图片中的字符信息,将其输入到指定文本框中,随着登录或者注册功能的提交将其传递给服务器进行验证处理。 2.作用:防止通过程序进行批量注册或者暴力...

    彩色验证码的实现

    2. **图像处理**:生成彩色验证码需要对图像进行处理。这包括创建一个随机的字符串(通常包含字母和数字),将这些字符以特定方式绘制到图像上,使用不同的颜色、字体和旋转角度以增加识别难度。 3. **色彩选择**:...

    JSP彩色验证码源码

    在Web开发中,JSP(JavaServer Pages)作为服务器端脚本语言,常被用来生成动态的彩色验证码。本源码就是一种实现JSP彩色验证码的方法,旨在帮助开发者快速构建具有高安全性和视觉吸引力的验证码功能。 首先,我们...

    jcaptcha做jsp彩色验证码

    标题"jcaptcha做jsp彩色验证码"即指使用jCaptcha库在JSP应用中生成彩色的验证码图片。 首先,我们需要引入jCaptcha的相关依赖。在这个案例中,我们看到压缩包内的"jcaptcha-all-1[1].0-RC6.jar"就是jCaptcha的核心...

    Jcaptcha 彩色验证码实例

    以下是一个简单的示例代码,展示如何使用Jcaptcha生成一个彩色验证码: ```java import com.octo.captcha.component.image.backgroundgenerator.RandomListBackgroundGenerator; import ...

    java生成登录验证码的方法

    验证码的作用:有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式...

    JSP实现彩色验证码源代码

    2. **颜色生成**:为了创建彩色验证码,我们需要为每个字符分配一个随机的颜色。Java的`Color`类可以用来创建不同颜色的对象,通过设置红色、绿色和蓝色分量的随机值。 3. **图像创建**:使用Java的`BufferedImage`...

    JSP分页,彩色验证码技术

    在本文中,我们将深入探讨两种重要的Web开发技术:JSP分页和彩色验证码。JSP(JavaServer Pages)是Java平台上的动态网页技术,而这两项功能是提高用户体验和网站安全性的关键要素。 首先,我们来关注JSP分页技术。...

    jsp 彩色 验证码 myeclipse工程 非数据库 源代码 下载

    在这个验证码项目中,JSP用于生成和展示彩色验证码图像。 **验证码的实现原理** 1. **随机生成数字或字母**:首先,我们需要生成一个随机的字符串,这个字符串将作为验证码的内容。可以使用Java的`Random`类配合...

    JSP彩色验证码

    综上所述,JSP彩色验证码的实现结合了JSP的动态页面生成能力,Java的图形处理技术以及随机数生成,旨在提供一个安全的用户验证机制,防止自动化攻击。理解和掌握这些知识点,对于进行Web开发和提升网站安全性至关...

    jsp彩色文字验证码

    总结来说,"jsp彩色文字验证码"是使用JSP和Java图形处理技术创建的一种安全机制,通过随机生成彩色、扭曲的文字来防止恶意自动化操作。开发者需要理解图形库的使用、随机数生成、字体处理以及服务器端验证等概念,...

    Jsp-color-code.rar_java 验证码_jsp_汉字验证码_随机验证码_验证码

    本项目“Jsp-color-code.rar”关注的是使用Java和JSP技术生成彩色汉字验证码,这涉及到多个关键知识点,下面将详细阐述。 首先,Java验证码的实现通常基于Servlet和JSP技术。Servlet是Java服务器端编程的基础,可以...

    jsp数字+字母验证码

    本文将深入探讨如何在JSP中生成一种混合数字和字母的彩色验证码。 首先,验证码的核心在于生成随机字符串。在Java中,我们可以使用`java.util.Random`类生成随机数,结合`Character`类来获取随机的字母和数字。通常...

    图文验证码模块

    首先,第一种验证方法是英文、数字和中文混合的彩色验证码。这种验证码设计考虑了多种字符类型,增加了机器识别的难度,因为机器学习算法对于中文字符的识别通常比英文和数字更困难。同时,彩色的背景和字符增加了...

Global site tag (gtag.js) - Google Analytics