校验码是网站常用的功能,是防止密码爆破,垃圾请求比较有效的做法。基本原理是在后台随机生成几个字符,保存在session中,并通过代码绘制成图片,显示在网页上,处理请求时,与session中保存的校验码作比较。
Java需要使用到awt包下与图片相关的几个类。以下是基本做法:
package com.test.weigs.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.Random;
/**
* 校验码生成器
* @author WeiGS
*
*/
public class CheckCodeGenerator {
//校验码长度 4字符
private static int checkCodeLength = 4;
//字体大小 18像素
private static int fontSize = 18;
//噪声线数量
private static int noiseLineCount = 10;
//图片高度
private static int imageHeigh = 25;
//图片宽度
private static int imageWidth = 80;
//随机字符域:大写英文字母和数字
private static char[] checkCodeRealm = {'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','U','Z',
'0','1','2','3','4','5','6','7','8','9'};
/**
* 生成校验码字符串
* @return
*/
public static String getCheckCodeString(){
Random random = new Random();
StringBuffer checkCodeBuffer = new StringBuffer();
for(int i=0;i校验码:
看不清,换一组
//换一张校验码图片的js方法
function changeCheckCode(){
var url = $("#checkCodeImg").prop("src");
url = url.substr(0,url.lastIndexOf('/')+1);
url = url + (new Date()).valueOf();
$("#checkCodeImg").prop('src',url);
}
页面效果如下,如果需要字体旋转等效果,可在绘制校验码方法中增加: