`
cheerwong
  • 浏览: 12918 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

图片验证码的实现

 
阅读更多

1.JSP页面:

<tr>
	<td valign="top" class="w1">
		验证码:
	</td>
	<td>
		<img id="validateImage" align="middle" id="validateImage"
			src="imageCode!checkCodeImage.action" width="150" height="40"
			onclick="this.src='imageCode!checkCodeImage.action?time='+(new Date()).getTime();" />
		<s:textfield name="validateCode" id="validateCode"
			onblur="return checkValidateCode()"></s:textfield>
		<div>
			<p class="t1">
				<span id="vcodeValidMsg">请输入图片中的四个字母。</span>
				<a href="javascript:" id="changeImage">看不清,再换一张</a>
			</p>
			<span id="numberInfo" style="color: red"> <s:property
					value="errors['validateCode']" />&nbsp; </span>
		</div>
	</td>
</tr>

 2.JS

$(function(){
  	//为验证码看不清链接添加单击切换处理
  	  $("#changeImage").click(function(event){
  	         $("#validateImage").attr("src","imageCode!checkCodeImage.action?time="+new Date().getTime());
  	  		  event.preventDefault();//防止浏览器默认处理href.
  	  });
})

 3.struts2配置文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="user-package" extends="dang-package" namespace="/user">
		<action name="imageCode" class="XXX.CheckCodeGenerationAction">
			<result name="image" type="stream">
				<param name="inputName">checkCodeStream</param>
			</result>
		</action>
	</package>
</struts>

 4.JAVA代码

CheckCodeGenerationAction:
public String checkCodeImage() {
		Map<String, BufferedImage> map = CheckCodeUtil.getCheckCodeImage();
		String code = map.keySet().iterator().next();
		session.put("code", code);
		BufferedImage image = map.get(code);
		checkCodeStream = CheckCodeUtil.parseImage(image);
		return "image";
	}

CheckCodeUtil:
public final class CheckCodeUtil {
	private static final String[] chars = { "0", "1", "2", "3", "4", "5", "6",
		"7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "东",
		"南", "西", "北", "中", "发", "白" };
	private static final int SIZE = 5;
	private static final int LINES = 20;
	private static final int WIDTH = 200;
	private static final int HEIGHT = 100;
	private static final int FONT_SIZE = 60;
	
	public static Map<String, BufferedImage> getCheckCodeImage(){
		StringBuffer sb = new StringBuffer();
		BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);
		Graphics g = image.getGraphics();
		//画底色
		g.setColor(Color.LIGHT_GRAY);
		g.fillRect(0, 0, WIDTH, HEIGHT);
		Random random = new Random();
		//画随机字符
		for(int i=1;i<=SIZE;i++){
			int num = random.nextInt(chars.length);
			g.setColor(getRandomColor());
			g.setFont(new Font(null,Font.BOLD+Font.ITALIC,FONT_SIZE));
			g.drawString(chars[num], (i-1)*WIDTH/SIZE, HEIGHT/2);
			sb.append(chars[num]);
		}
		//画干扰线
		for(int i=0;i<LINES;i++){
			g.setColor(getRandomColor());
			g.drawLine(random.nextInt(WIDTH), random.nextInt(HEIGHT), random.nextInt(WIDTH), random.nextInt(HEIGHT));
		}
		Map<String, BufferedImage> map = new HashMap<String, BufferedImage>();
		map.put(sb.toString(), image);
		return map;
	}
	public static Color getRandomColor() {
		Random ran = new Random();
		Color color = new Color(ran.nextInt(256), ran.nextInt(256), ran
				.nextInt(256));
		return color;
	}
	
	public static InputStream parseImage(BufferedImage image){
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
		try{
			encoder.encode(image);
			ByteArrayInputStream inputStream = new ByteArrayInputStream(out.toByteArray());
			return inputStream;
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
		
	}
}

 

分享到:
评论

相关推荐

    改进的PHP技术下的图片验证码实现方案.pdf

    改进的PHP技术下的图片验证码实现方案.pdf

    Android开发图片验证码的实现

    本教程将详细讲解如何在Android项目中实现图片验证码的功能。 首先,理解图片验证码的基本原理。验证码通常由一串随机字符组成,这些字符被扭曲、旋转、加噪,以增加机器识别的难度。用户需要正确输入显示的字符...

    一个asp.net图片验证码

    在这个特定的案例中,我们关注的是一个与ASP.NET相关的图片验证码实现。 在ASP.NET中创建图片验证码通常涉及以下步骤: 1. **生成随机字符串**:首先,我们需要生成一个随机的字符串,这个字符串将被显示在图片上...

    asp图片验证码

    asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码asp图片验证码

    ios-图片验证码.zip

    以下是关于iOS图片验证码实现的关键知识点: 1. **验证码的基本原理**:验证码的主要目的是验证用户是真实的人而非机器。它通常要求用户识别并输入图片上显示的一组随机字符或数字,以证明他们具备人类视觉识别的...

    图片验证码(C# VS2008)

    总的来说,这个项目提供了一个基础的图片验证码实现框架,开发者可以根据实际需求对其进行扩展,比如增加字符集、调整字符样式、改变噪声模式等,以提高验证码的安全性和用户体验。对于初学者来说,这是一个很好的...

    Java图片验证码工具类

    2. **Java图片验证码实现**: 在Java中,我们可以使用`java.awt`和`javax.imageio`库来创建和处理图片。首先,创建一个新的空白图片,然后在图片上绘制随机颜色和形状的干扰线,最后在合适的位置上绘制随机生成的...

    java图片验证码实现示例分享

    ### Java 图片验证码实现原理与示例解析 #### 一、引言 随着网络安全的重要性日益增加,验证码成为了网站登录及表单提交时不可或缺的一部分。它主要用于区分操作者是人类还是自动程序,以此来防止恶意软件的攻击。...

    ThinkPHP3.2.1图片验证码实现方法

    在介绍ThinkPHP3.2.1中图片验证码实现的过程中,以下知识点至关重要: 1. ThinkPHP框架版本:本文讨论的是ThinkPHP3.2.1版本,这是一个稳定且广泛使用的框架版本。开发者需要确认自己所使用的ThinkPHP版本,以便...

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

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

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

    1.部署步骤 1.1 100%可生产使用. 1.2 导入到idea时候选择maven项目 1.3 修改demo里面子项目resources/application.yml的redis... 4.2拖动图片验证码:https://blog.csdn.net/m0_38138879/article/details/117559456

    图片验证码控件和Demo

    总的来说,这个资源为Web开发者提供了一套完整的图片验证码实现,涵盖了从生成到验证的全过程,且具有高度的可定制性。通过学习和利用这个控件,开发者可以有效地增强他们的Web应用程序的安全性,防止非法自动化操作...

    VUE实现图片验证码功能

    本文实例为大家分享了VUE实现图片验证码的具体代码,供大家参考,具体内容如下 1. 概述 1.1 说明 在开发过程中,有时候需要使用图片验证码进行增加安全强度,在点击图片时更新新的图片验证码,记录此功能,以便后期...

    ASP.NET MVC实现网站验证码功能

    总之,ASP.NET MVC中的图片验证码实现涉及多个步骤,从生成随机字符串到绘制图片,再到验证用户输入,每个环节都需要仔细设计和实现。通过这种方式,我们可以增强网站的安全性,防止自动化攻击,同时确保用户体验的...

    java图片验证码

    ### Java 图片验证码实现原理与代码解析 #### 一、概述 在许多网站或应用程序中,为了防止机器人的恶意操作,经常会使用到图形验证码。Java 图片验证码是一种常见的实现方式,它通过生成具有一定随机性的图像,并...

    随即图片验证码

    总之,这个“随即图片验证码”项目涵盖了验证码生成、图像处理、服务器验证和前端交互等多个方面,为开发者提供了一个完整的图片验证码实现示例。通过深入理解并实践这个项目,可以提升在Web安全和用户体验设计上的...

    PHP图片验证码的实现

    PHP图片验证码的实现

    beego框架图形验证码实现

    【beego框架图形验证码实现】是使用Go语言开发的一个高效且功能丰富的图形验证码库,它为Web应用提供了安全的验证码生成服务。这个库的核心目的是为了防止自动化程序(如机器人)进行非法操作,如批量注册、恶意登录...

    struts2图片验证码--struts2图片验证码-(通用版)

    ### Struts2 图片验证码实现解析 #### 一、引言 在Web应用程序中,图片验证码(CAPTCHA)被广泛用于防止自动化攻击和机器人操作,确保用户是真实的人类。Struts2框架提供了丰富的功能来集成这样的安全特性,本文将...

    采用ajax实现的图片验证码

    采用ajax技术实现的图形验证码,在前端进行验证。验证码信息为图片。每一行代码均有注释,通俗易懂。 实现步骤: 1、创建web工程 2、在jsp页面,编写一个请求servlet的名称"&gt; 3、编写一个servlet,在servlet中产生...

Global site tag (gtag.js) - Google Analytics