`
windywindy
  • 浏览: 170120 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

验证码(一)

阅读更多
Pair.java
public class Pair<K, E> {
	private K key;
	private E value;

	public Pair() {
	}

	public Pair(K key, E value) {
		this.key = key;
		this.value = value;
	}

	public K getKey() {
		return key;
	}

	public void setKey(K key) {
		this.key = key;
	}

	public E getValue() {
		return value;
	}

	public void setValue(E value) {
		this.value = value;
	}
}


ImageOut.java
import java.awt.Color;  
import java.awt.Font;  
import java.awt.Graphics2D;  
import java.awt.image.BufferedImage;  
import java.util.Random;  
  
public class ImageOut {  
  
    private static final int WIDTH = 62;  
    private static final int HEIGHT = 20;  
  
    private static Color getRandomColor() {  
        Random random = new Random();  
        return new Color(50 + random.nextInt(100), 50 + random.nextInt(100),  
                50 + random.nextInt(100));  
    }  
  
    private static int getRandomBgInt() {  
        Random random = new Random();  
        return 180 + random.nextInt(60);  
    }  
  
    private static Font getRandomFont() {  
        Random random = new Random();  
        return new Font("Times New Roman", Font.PLAIN, 10 + random.nextInt(8));  
    }  
  
    public static char getRandomChar() {  
        Random random = new Random();  
        if (random.nextInt(6) < 3) {  
            return (char) (65 + random.nextInt(26));  
        }  
        if(random.nextInt(6) < 3){
        	 return (char) (48 + random.nextInt(10)); 
        }
        return (char) (97 + random.nextInt(26));  
    }  
  
    public static Pair<String, BufferedImage> getImage() {  
  
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT,  
                BufferedImage.TYPE_INT_RGB);  
        Graphics2D g = image.createGraphics();  
        g.setColor(new Color(255, getRandomBgInt(), 255));  
        g.fillRect(0, 0, WIDTH, HEIGHT);  
        StringBuilder s = new StringBuilder();  
        for (int i = 0; i < 4; i++) {  
            String t = String.valueOf(getRandomChar());  
            s.append(t);  
            g.setColor(getRandomColor());  
            g.setFont(getRandomFont());  
            g.drawString(t, 3 + 16 * i, 18);  
        }  
        g.dispose();  
        return new Pair<String, BufferedImage>(s.toString(), image);  
    }  
}  


validateImage.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.awt.image.BufferedImage,javax.imageio.ImageIO" %>
<%@page import="com.lhz.util.Pair,com.lhz.util.ImageOut" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<%
            response.setContentType("image/jpeg");
            response.setHeader("Pragma", "No-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
            Pair<String, BufferedImage> p = ImageOut.getImage();
            ImageIO.write(p.getValue(), "JPEG", response.getOutputStream());
            out.clear();
			out = pageContext.pushBody();
            session.setAttribute("valid", p.getKey());
%>


login.jsp
<script type="text/javascript">
			function changeValidateCode(obj) {
				var timenow = new Date().getTime();
				obj.src = "<%=path%>/validateImage.jsp?d=" + timenow;
			}
</script>


<td>
			<span style="color: red;">*</span>验证码
</td>
<td>
  <input style="ime-mode: disabled" class="inputValidate" type="text" name="yanzhm" />
  <img alt="看不清?单击更换!" src="<%=path%>/validateImage.jsp" onclick="changeValidateCode(this)" />
</td>

分享到:
评论

相关推荐

    php实用验证码一例 php实用验证码一例

    php实用验证码一例 php实用验证码一例 php实用验证码一例

    万能通杀验证码一句话识别验证码源码2.0破J版验证码识别

    万能通杀验证码一句话识别验证码源码2.0破J版验证码识别

    自定义验证码密码输入器demo

    验证码(Verification Code)是网络应用中常见的...总的来说,"自定义验证码密码输入器demo"是一个实用的开发资源,可以帮助开发者快速集成验证码功能,并根据应用场景进行个性化定制,提高应用的安全性和用户体验。

    验证码一款很不错的验证码哦

    验证码(CAPTCHA)是一种常用的技术手段,用于区分用户是人类还是自动程序(如机器人)。其主要目的是保护网站免受自动化攻击,比如垃圾邮件、票务抢购、账户注册等非法操作。通常,验证码会向用户展示一组扭曲的...

    基于struts1.x的验证码实现

    4. **防止重复提交**:为了增加安全性,可以设置验证码一次有效,即用户输入验证码后,无论是否正确,都会立即清除session中的验证码,防止恶意用户多次尝试。 5. **优化用户体验**:验证码的设计应考虑用户体验,...

    实验五 AJAX开发及JSP验证码

    1. **生成验证码**:在`checkcode.jsp`中,可以生成一个包含随机字符的图像,并将验证码存储在session中。通常会先创建一个图像,设置背景色,然后随机生成字符串作为验证码,将字符串保存在session中,最后绘制到...

    java生成验证码代码

    当用户提交表单时,会携带输入的验证码一同发送到服务器。服务器端通过获取session中的验证码与用户输入的验证码进行比较,如果一致,则验证成功;否则,提示用户重新输入。 这就是"java生成验证码代码"的基本原理...

    一次性的验证码代码

    使用java代码写出的一次性的验证码,需要自己写一个.txt文件

    一个低调的行为验证码 [滑块验证码、点选验证码、行为验证码、旋转验证码, 滑动验证码].zip

    行为验证码是一种高级的验证码形式,它不仅依赖于图像识别,更关注用户在执行验证任务时的行为模式。本资料主要探讨了四种类型的行为验证码:滑块验证码、点选验证码、行为验证码以及旋转验证码,特别是滑动验证码。...

    java随机生成验证码图片和校验

    为了实现验证码的校验,用户提交表单时,前端将输入的验证码一同发送到服务器。 在后端,控制器接收表单数据,首先从Session中取出先前保存的验证码,然后与客户端提交的验证码进行比较。如果两者匹配,验证成功;...

    一次性验证码.zip

    在本压缩包中,可能包含的是一个简单的一次性验证码实现的代码示例,适合初学者学习和理解这一概念。可能的文件结构可能包括以下几个部分: 1. **生成器模块**:这个模块负责生成随机的一次性验证码,通常使用强...

    ajax验证码 验证码ajax 生成中文验证码

    1. **服务器端生成验证码**:服务器上需要有一个生成验证码的逻辑,这通常涉及到随机生成一组中文字符或数字,然后将其存储到服务器会话(session)或者Cookie中,以供后续验证使用。 2. **Ajax请求**:当用户触发...

    安卓发送验证码倒计时效果和自动获取验证码并填充

    在安卓应用开发中,"安卓发送验证码倒计时效果和自动获取验证码并填充"是一个常见的功能,主要用于用户注册、登录或修改重要信息时的身份验证。这个功能涉及到多个关键知识点,包括网络请求、短信监听、UI更新以及...

    Flash型动态验证码设计与实现

    描述了一种安全实用的Flash动态验证码,该验证码由ASP代码生成,在Flash中显示,通过Flash动画遮罩,在任一时刻只显示验证码一部分,变换验证码字体、颜色和增加背景噪音等手段增加验证码被自动识别的难度。

    一个不错的验证码图片

    验证码(CAPTCHA)是一种用于验证用户是否为人类的技术,它通常用于防止自动化程序(如机器人或爬虫)进行恶意操作,比如批量注册、发送垃圾邮件等。在这个压缩包中,包含的是一个简单的验证码图片生成器的源代码,...

    一次性验证码 源码

    本源码可能实现了一个类似于市面上广泛使用的验证码系统。 一次性验证码的实现原理主要有两种:基于时间的一次性密码(TOTP)和基于挑战-响应的一次性密码(HOTP)。TOTP是根据当前时间生成的,而HOTP则基于一个...

    Js彩色验证码【一个html表单和js验证码有验证效果的实例】

    整个html打开可以看到效果,不包含验证码背景图片,自己找一个命名为code.jpg就有背景了,js验证码比jsp...这个程序既可以直接验证,也可以点击验证码刷新一个新的验证码(当原来的验证码看不清楚的时候),再验证

    gif动态登录验证码

    在网络安全领域,登录验证码是一种广泛使用的安全机制,用于防止恶意自动化程序(如机器人)未经授权地访问或操作用户账户。本文将深入探讨“gif动态登录验证码”这一特定的技术,以及它如何增强网站的安全性。 ...

    java随机产生验证码

    验证码是一种通过图形图像显示随机字符的方式,用户需要输入图片中显示的文字来验证其身份。本篇将详细介绍如何使用Java实现一个简单的随机验证码生成器。 首先,创建一个名为`RandomImage`的类,该类主要用于生成...

    javaweb简单的一次性验证码

    在Java Web开发中,验证码(CAPTCHA)是一种用于防止机器自动操作的安全机制,它要求用户在执行特定操作前输入图片中显示的随机字符或数字。本项目提供的“javaweb简单的一次性验证码”是一个基于Servlet实现的简单...

Global site tag (gtag.js) - Google Analytics