java生成验证码
有很多种方式,在网上也有很多代码,但是那些生成的效果,感觉都不是特别好,所以我在他们的基础上改良了一些。
但能还可以用jmagick ,生成很多很炫的验证码。过两天研究下。先把最近改的这个发布下供朋友们参。
可以先看看样例。最近在做这个网站。大家有兴趣可以叫交流。约会360 网址: www.yuehui360.com
验证码效果可以在
约会360注册页面 http://www.yuehui360.com/register.htm 查看效果
图片效果:
代码如下:
package com.idate.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* @author lqinglong@yahoo.cn
* 约会360 www.yuehui360.com
*/
public class CodeHelper {
private static final CodeHelper generator = new CodeHelper();
private final String ATTRIBUTE_NAME = "code";
//图片的宽度
private final int WIDTH = 35;
//图片的高度
private final int HEIGHT = 55;
//字符串长度
private final int CODE_LENGTH = 4;
//随机字符串范围
private final String RAND_RANGE = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" ;
private final char[] CHARS = RAND_RANGE.toCharArray();
private Random random = new Random();
private CodeHelper(){
//
}
public static CodeHelper getInstance(){
return generator;
}
/**
* 生成随机字符串
* @return 随机字符串
*/
private String getRandString(){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < CODE_LENGTH; i++)
sb.append(CHARS[random.nextInt(CHARS.length)]);
return sb.toString();
}