{1)验证码是什么?
就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
(2)验证码的作用?
验证码一般是防止有人利用机器人自动批量注册、对特定的注册用户用特定程序暴力破解方式进行不断的登陆、灌水。因为验证码是一个混合了数字或符号的图片,人眼看起来都费劲,机器识别起来就更困难。
(3)添加验证码的过程(struts中)
1)
将验证码的代码放于一个JSP文件(image.jsp)中.
2)
在验证码的JSP文件中,可以修改设置:
session.setAttribute("ccode",sRand); -->修改要获取的session属性名
3)
在要进行验证的JSP中,添加如下:
验证码:<html:text property="checkcode"></html:text>
<img src="image.jsp"><br>
4)
在ACTION中:
// 先判断验证码是否正确
String ccode = (String) request.getSession().getAttribute("ccode");
String checkcode = userForm.getCheckcode();
if (!(checkcode.equals(ccode))) {
ActionMessages errors = new ActionMessages();
errors.add("checkcode", new ActionMessage("checkcode.error"));
super.saveErrors(request, errors);
return mapping.getInputForward();
}
验证码代码:
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
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 image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(4位数字)
//String rand = request.getParameter("rand");
//rand = rand.substring(0,rand.indexOf("."));
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}
// 将认证码存入SESSION
session.setAttribute("ccode",sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
分享到:
相关推荐
某杂志论文-基于Struts技术的验证码应用
google 很牛的Captcha---recaptcha验证码应用 轻松搞定网站验证码 国外大多数网站都使用gg此验证码 很帅的~~ 提供语音识别
计算机前端-核心编程day5-07验证码应用.avi
Java Web中验证码的生成和应用!
在本专题课程“JavaWeb短信验证码应用”中,我们将深入探讨如何在用户注册流程中集成短信验证码功能,以确保用户提交的手机号码真实有效,并减少数据库中的无效或垃圾信息。这个过程涉及到多个技术领域的知识,包括...
本篇文章将详细探讨PHP验证码的应用,包括其原理、实现方法以及一些实际案例。 验证码的基本原理是通过显示一个难以由计算机程序识别的图像,来区分人类用户和机器。通常这个图像包含一些随机字符或数字,用户需要...
下面我们将深入探讨这个“JAVA 验证码WEB应用”。 首先,验证码的生成过程涉及到几个关键技术点: 1. **随机字符串生成**:通常,验证码由4到6个随机字符组成,可以是字母、数字或者特殊字符。在Java中,我们可以...
django python的验证码应用程序 使用极其简单: 第一个控制台命令: pip install git+https://github.com/desenvolvendoweb/django-captchapy.git 第二个设置.py: INSTALLED_APPS = ( ... 'captchapy', ) 第...
【Django验证码应用详解】 Django是一个用Python编写的高级Web框架,它鼓励快速开发和清洁、实用的设计。在这个项目中,"我的Django编写项目,包含验证码",我们可以看到开发者在构建网站时考虑到了安全性,通过...
这是一个验证码的源码,很好用,建个jsp页面粘上去,效果就出来了
在实际的图片验证码应用中,通常会生成一串随机的字母或数字,并使用扭曲、倾斜、噪声等技术增加机器识别的难度。同时,为了防止重复使用同一验证码,还需要提供一个机制来刷新图片。刷新图片主要是重新生成新的...
在创建验证码应用时,开发者可能使用了以下WinForm组件和技术: 1. 图形绘制:验证码通常包含随机生成的字符或数字,这些元素需要在图形上下文中绘制。在WinForm中,可以使用Graphics类来绘制文本、线条和其他形状...
近年来随着互联网应用技术的飞速发展,为了确保网站系统平台的安全性,各类网站相继推出了验证码应用技术,通过验证码的应用来帮助缓解暴力破解账户密码、垃圾邮件攻击以及在线虚假投票等安全问题,传统的验证码采用...
验证码应用可能需要处理用户输入为空、输入格式错误等情况。 11. **.NET Framework**:这个项目基于.NET Framework运行,它是微软提供的一个开发平台,包含了用于构建、部署和运行.NET应用程序的各种工具和库。 ...
在本案例中,“成功的验证码案例-----struts验证码demo”是一个基于Struts框架实现的简单易懂的验证码应用。Struts是Java EE平台上的一款开源MVC框架,它为构建Web应用程序提供了强大的结构支持。 首先,我们来理解...
使用java写的验证码应用程序,可以在页面上自动生成验证码,用于用户输入验证码认证
本实例是一个基于Struts框架实现的验证码应用,旨在帮助开发者理解和实践验证码的生成与验证。 验证码的核心功能包括: 1. **生成随机图像验证码**:在服务器端,验证码通常通过生成随机字符串并将其转化为图像来...
在给定的文件中,我们可以看到涉及到验证码应用的几个关键组件: 1. **AdminServlet.java**:这是一个Java Servlet文件,通常用于处理HTTP请求。在验证码场景下,这个Servlet可能负责生成和验证验证码。当用户请求...
利用JBuilder,开发者可以更方便地编写、调试和部署JSP验证码应用程序。 创建JSP验证码涉及到以下几个关键知识点: 1. **JSP基本结构**:JSP页面由HTML标记、脚本元素和指令组成。在验证码实现中,可能包含一个...