制作验证码

image.jsp

<%@page import="java.net.URL" %>
<%@page import="java.io.InputStream" %>
<%@ page language="java" import="java.util.*" pageEncoding="gbk" %>
<%@ 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);
}
%>
<%
out.clear();
//设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

// 在内存中创建图象
int width = 70, height = 30;
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("宋体", Font.PLAIN, 18));
//g.setFont(new Font("Tahoma",Font.PLAIN,18));
//URL url = new URL("http://127.0.0.1:8080/crm/resource/font/SIMSUN.TTC");
//InputStream is = url.openStream();
/* InputStream is = this.getClass().getClassLoader().getResourceAsStream("COURI.TTF");

System.out.println(is);
Font f = Font.createFont(Font.PLAIN, is); */
//f.deriveFont(30);
/* f.deriveFont(Font.PLAIN, 18);
is.close();
g.setFont(f); */

//画边框
g.setColor(Color.black);
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);
}

char[] cs = new char[]{‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘, ‘A‘, ‘B‘, ‘M‘};

// 取随机产生的认证码(4位数字)
String sRand = "";
for (int i = 0; i < 4; i++) {
char c = cs[random.nextInt(cs.length)];//[0,4)
String rand = new Character(c).toString();
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);
g.drawString(rand, 13 * i + 6, 20);
}

// 将认证码存入session
session.setAttribute("rand", sRand); //这行代码使我们关注的重点
// 图象生效
g.dispose();

// 输出图象到页面
try {
ImageIO.write(image, "JPEG", response.getOutputStream());
} catch (Exception e) {
e.getMessage();
} finally {

//解决以调用错误
out = pageContext.pushBody();

}
%>

时间: 2024-11-09 01:10:59

制作验证码的相关文章

学习MVC之制作验证码

制作验证码的方法在@洞庭夕照 看到的,原文链接:http://www.cnblogs.com/mzwhj/archive/2012/10/22/2720089.html 现自己利用该方法制作一个简单的验证码,运行程序效果如下: 现正式开始: 1.新建项目:VerificationCodeTest 2.选择模板:基本 3.添加图片: 放置位置: 4.重点来了,新建文件夹Image,再新建一个类Text.cs using System; using System.Collections.Generi

Jsp制作验证码

验证码 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apart"(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序.可以防止:恶意破解密码.刷票.论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能.这个问题可以由计算

PHP制作验证码

PHP制作验证码详细教程 效果: myvcode.class.php:封装创建验证码的类 1: <?php 2: /* 3: * file:myvcode.class.php 4: * 验证码类,类名Vcode 5: */ 6: class Vcode 7: { 8: private $width; /*验证码宽度*/ 9: private $height; /*验证码高度*/ 10: private $codeNum; /*验证码字符个数*/ 11: private $checkCode; /

制作验证码时 图片无法刷新

1在网页上制作上图中的验证码时,点击图片不能刷新依旧是原图,找了好久终于发现是js语句中的错误,如下: 如果不加后面的new Date().getTime(),每次请求/AuthCode/getAuthCode都是一样的所以图片不会变化,加上之后每次请求会变化,就会重新加载图片了1 function reload(){                    document.getElementById("bt").src="/AuthCode/getAuthCode?&qu

简单制作验证码和绘制图片

今天仍然是完善一般处理程序小项目,但是昨天小小的项目已经终结,今天只是完善一下新的样式罢啦,嘿嘿,我们通常在网上浏览图片时间都会看到图片上面呈现有水印字体的样式,其实这些图片都是通过一些简单的小技术来修饰的:另外我们现在在网上随处可见注册页面,当我们想在一个网站上面注册新的用户时间,需要注册完信息以后填写随机生成的验证码,或者我们想要登录一个网站时间也需要验证码的填写,由此可见,验证码也是我们程序员需要必备的小技术哦,下面就来总结一下这两项小功能的实现. 一.图片上的水印字体 我们可以看到第一张

PHP_制作验证码

PHP制作一个验证码,主要使用数组相关函数 1 <?php 2 header("content-type:text/html;charset=UTF-8"); 3 //建立3个范围数组 4 $shuzi = range(0,9); 5 $zimuda = range('A','Z'); 6 $zimuxiao = range('a','z '); 7 8 //将这3个数组合并成新数组 9 $arr=array_merge($shuzi,$zimuxiao,$zimuda); 10

java制作验证码

建立一个web工程 编写servlet,生成图像 package com.imooc; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.http.HttpServlet

jcaptcha sample 制作验证码

Skip to end of metadata Created by marc antoine garrigue, last modified by Jeremy Waters on Feb 23, 2012 Go to start of metadata Description This integration module provides the shortest way to integrate JCaptcha to your web application. This module

PHP用GD库绘制图片,制作验证码浏览器不能输出

1,代码如下: <?php function fillRandomString(){ //生成验证码 $char = array_merge(range(0, 9),range("a", "z"),range("A", "Z")); //讲字符串$char打乱 $luan = str_shuffle(implode("", $char)); //从字符串中随机取四位 return  substr($l

使用Java制作验证码

验证码介绍 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apart"(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序.可以防止:恶意破解密码.刷票.论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能.这个问题可以由