在HTML中放一个文本框,一个img,如下:
验证码:<input id="checkCode" class="input_check" type="text" value="" maxlength="4"/>
<img id="checkCodeImg" src="login/ImageCode.jsp" border="0" align="absmiddle" />
然后在webRoot/login目录下新建ImageCode.jsp文件,如下:
<%@ page contentType="image/jpeg"
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%!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 = 65, 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 sRand = "";
for (int i = 0; i < 4; i++) {
//nextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值
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("check_code", sRand);
//图象生效
g.dispose();
//输出图象到页面
try {
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();
} catch (Exception e) {
e.printStackTrace();
}
%>
现在已经将验证码信息放在session中的check_code属性中了,在后台的类中可以通过下面的方式获得验证码信息:
request.getSession().getAttribute("check_code")
分享到:
相关推荐
获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是识别验证码!获取验证码图片,不是...
Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~
使用Servlet生成验证码图片。 一个生成验证码图片的工具类。
java后台根据随机数生成验证码,js调用,点击可以换验证码。测试效果:完全正常使用,Servlet能获取生成的验证码和用户输入的验证码。
在系统登录或注册时随机(1--9整数)生成的验证码图片,点击图片进行刷新,同时可以获取图片上的随机数。
生成验证码,而且是区分大小写的,用asp.net做的
C#制作以数字、英文字母以及噪音线组成的验证码,并提供验证码验证功能
在jsp登录页面生成验证码,并在登录的时候在后台进行验证码是否一致的比较。
这是一个验证码生成器,有以下功能(代码内部的注释很详细): ...注:下载文件中的验证码类是在VerificationCode.cs文件中,调用GetRandomBitmap获取图片调用IsInputRight判断是否你输入的文字符合
可用于MVC、asp.net 登录注册等页面生成验证码 一般处理程序获取验证码、mvc获取验证码、切换验证码
用jsp页面的方式实现验证码的生成和获取
验证码信息为图片。每一行代码均有注释,通俗易懂。 实现步骤: 1、创建web工程 2、在jsp页面,编写一个请求servlet的名称"> 3、编写一个servlet,在servlet中产生图形验证码 -----------------------------------...
项目已经运行过,完全没有问题,下载以后之间导入myeclipse就可以运行
通过ajax方式从后台获取验证码,并且通过ajax方式进行后台验证,提高验证码的安全性。
使用时先实例化类,就可以直接调用Image属性获得验证码图形,Text属性是验证码的文本,如果使用的是算式验证码,可以调用类的getCodeValue方法获取验证码算式的值,getCodeValue方法需要带上验证码的文本作为参数。...
识别图形验证码的算法源码,带实例,并可自动生成模板文件
图片验证码识别 UUID唯一ID动态生成样本 动态生成全国的身份证号样本 动态生成手机号样本 token使用MD5加密生成样本 跨越线程组参数化样例 数据库动态参数化 数据库物理清理测试数据 等等
ASP.NET验证码程序,可以生成图片,也可以直接显示文本,含调用实例
QT通过web service获取到需要生成的验证码的base64图片流进行验证码的显示或者保存功能
3、可自定义验证码图片外观。 4、有水平方向垂直方向两种方式选择。 5、有数字、小写字母、大写字母三种及任意两种组合、三种组合字符选择。 6、兼容IE及FireFox。 二、使用说明。 1、属性。 IsMatch:指示用户输入...