`
BabyDuncan
  • 浏览: 585547 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据responseServlet生成图片验证码

阅读更多
代码:
package com.babyDuncan.response;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class indentity extends HttpServlet {

	public static final char[] CHARS = { '1', '2', '3', '4', '5', '6', '7',
			'8', '9', 'a', 'f', 'k', 'r', 'y' };

	public static Random random = new Random();

	public static String getRandomStriong() {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < 6; i++) {
			sb.append(CHARS[random.nextInt(CHARS.length)]);
		}
		return sb.toString();
	}
	
	public static Color getRandomColor(){
		return new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255));
	}
	
	public static Color getOtherColor(Color c){
		return new Color(255-c.getRed(),255-c.getGreen(),255-c.getBlue());
	}

	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("image/jpeg");
		String randomString  = getRandomStriong();
		this.log(randomString);
		request.getSession(true).setAttribute("randomString", randomString);
		int width = 100;
		int heigth = 30;
		
		Color color = getRandomColor();
		Color otherColor = getOtherColor(color);
		
		BufferedImage bi = new BufferedImage(width,heigth,BufferedImage.TYPE_INT_RGB);
		Graphics2D g = bi.createGraphics();
		g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,16));
		g.setColor(color);
		g.fillRect(0,0,width,heigth);
		g.setColor(otherColor);
		g.drawString(randomString, 18, 20);
		
		for(int i=0;i<random.nextInt(100);i++){
			g.drawRect(random.nextInt(width), random.nextInt(heigth), 1, 1);
		}
		
		ServletOutputStream out = response.getOutputStream();
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
		encoder.encode(bi);
		out.flush();
	}
}


前端代码为:
 <body>
    <script type="text/javascript">
    function reloadImage(){
    	document.getElementById("btn").disabled = true;
    	document.getElementById("inditity").src = "servlet/indentity?ts="+
    	new Date().getTime();
    }
    </script>
    <image src="servlet/indentity" id="inditity" onload="btn.disabled=false;">  </image>
    <input type="button" value="换张图片" id="btn" onclick="reloadImage()"/>
  </body>

运行结果还行:
  • 大小: 12.6 KB
  • 大小: 11.6 KB
  • 大小: 13 KB
分享到:
评论

相关推荐

    登陆验证+servlet动态生成图片验证码

    在Servlet中生成图片验证码,首先需要创建一个Servlet类,该类将负责生成随机字符串并将其转化为图像。以下是一些关键步骤: 1. **生成随机字符串**:使用`java.util.Random`和`char[]`数组来创建一个指定长度的...

    JSP中利用Servlet生成验证码图片

    ### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...

    java web笔记之servlet生成验证码

    本笔记将详细探讨如何使用Servlet来生成验证码。 一、验证码的原理与作用 验证码的主要目的是区分人类用户和自动化程序,通过要求用户输入图片上的文字或者完成简单的数学问题,来验证其为真实的人类。这有助于防止...

    response生成图片验证

    生成图片验证码的过程分为以下几个步骤: 1. **随机字符生成**:验证码通常包含4到6个随机字符,这些字符可以是数字、大小写字母或其他符号。这些字符是通过Java的随机数生成器和字符集来创建的,确保每次请求时都...

    利用jsp生成图片验证码

    在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...

    servlet生成验证码图片

    ### 关于servlet生成验证码图片的知识点 #### 一、概述 在Web应用开发中,验证码(CAPTCHA)被广泛用于防止自动化攻击或垃圾信息发送等安全问题。使用Java Servlet来生成验证码图片是一种常见的实现方式。本文将...

    SpringMVC生成的验证码图片不显示问题及解决方法

    3. 将验证码图片输出到客户端,使用ServletResponse对象的getOutputStream()方法。 4. 将验证码存入Session中,以便后续验证。 知识点3: 验证码图片不显示的问题 在本例中,验证码图片生成成功,但是却不显示在...

    servlet实现的图片验证码

    本教程将详细介绍如何使用Servlet技术来实现一个基本的图片验证码功能。Servlet是Java服务器端编程的核心技术之一,它可以接收和响应HTTP请求,非常适合构建动态Web应用程序。 首先,我们需要理解验证码的基本原理...

    jsp生成图片验证码

    总结来说,使用JSP生成图片验证码涉及到以下几个关键点:生成随机字符串、存储验证码、绘制并输出图片以及设置HTTP响应类型。这种方法简单易用,但要注意,对于高级的自动化攻击,可能需要更复杂的验证码解决方案,...

    Java生成图片验证码[文].pdf

    以下是一个简单的Java Servlet实现生成图片验证码的过程。 首先,我们看到这个类`Image`继承自`HttpServlet`,这意味着它用于处理HTTP请求。`processRequest`方法是处理HTTP `GET`和`POST`请求的核心,它将生成并...

    用servlet实现动态的生成验证码,点击验证码改变,及验证码的校验

    4. **保存图像到响应**:使用Servlet的`response.getOutputStream()`方法,将生成的验证码图像以JPEG或PNG格式写入HTTP响应,设置响应的MIME类型为对应的图像类型。 三、点击更换验证码 1. **监听器**:在HTML页面...

    java 生成动态gif 验证码

    - **展示验证码**:在JSP页面上,使用`&lt;img&gt;`标签加载Servlet生成的GIF验证码。 - **用户输入验证**:用户输入验证码后,提交表单时,服务器会对比Session中的验证码内容和用户输入,如果匹配则验证成功,否则提示...

    jsp servlet 验证码

    在本案例中,`RandomCodeServlet` 类继承了 `HttpServlet` 类,并重写了 `service` 方法,该方法负责生成验证码图片并将其发送给客户端。具体实现步骤如下: 1. **创建图片**:首先创建一个 `BufferedImage` 对象...

    生成验证码图片的jsp代码

    在Web开发中,使用JSP(JavaServer Pages)来生成验证码图片是一种常见的方法。下面我们将详细讨论如何在JSP中实现验证码的生成。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机的字母和数字,有时...

    Servlet生成验证码

    ### Servlet生成验证码知识点详解 #### 一、Servlet与验证码简介 - **Servlet**: Servlet是一种Java技术,用于扩展服务器的功能。Servlet被容器(如Tomcat)管理,并且可以生成动态的Web页面。它允许开发人员创建...

    jsp引用servlet生成的验证码代码演示

    本示例中的代码展示了如何通过JSP和Servlet生成一个简单的四位数字验证码。以下是具体的知识点解析: 1. **Servlet基础**: Servlet是Java Web应用程序中的服务器端组件,用于处理HTTP请求并生成响应。`...

    采用ajax实现的图片验证码

    生成图片中的文字: 1、先编写一个字符串,包含:数字,大小字母 private String s = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 2、在产生背景之后,编写如下代码,产生四个字符...

    Spring框架生成图片验证码实例

    总结来说,Spring框架生成图片验证码的实现涉及以下几个步骤: 1. 创建验证码生成器类,用于生成随机字符串并将其转化为图像。 2. 在Spring MVC控制器中创建一个处理请求验证码的端点,将图像数据直接输出到HTTP响应...

    用servlet实现验证码功能

    - `src`属性指向Servlet的URL,Servlet会动态生成验证码图片。 - 可以设置`alt`属性提供文本描述,以提高可访问性。 2. **添加表单元素** - 创建一个输入框让用户输入看到的验证码。 - 提交表单时,携带用户...

Global site tag (gtag.js) - Google Analytics