Java实现登录验证码及后台校验功能
login.html
在login.html中,用session接收前台输入的验证码。
<input id="userCaptcha" name="userCaptcha" type="text" placeholder="请输入验证码" />
<img id="kaptchaImage" src="./UserMan/getCheckNumber" onclick="change();" >
<a href="#" class="denglu" onclick="denglu()" ></a>
CheckNumber.java(util)
用于生成验证码的工具类。
public class CheckNumber {
private int w = 70;//验证码图片宽
private int h = 35;//验证码图片高
private Random r = new Random();//随机对象
// {"宋体", "华文楷体", "黑体", "华文新魏", "华文隶书", "微软雅黑", "楷体_GB2312"}
private String[] fontNames = {
"宋体", "华文楷体", "黑体", "微软雅黑", "楷体_GB2312"};
// 可选字符
private String codes = "0123456789abcdefghjkmnopqrstuvwxyz";
// 背景色
private Color bgColor = new Color(255, 255, 255);
// 验证码上的文本
private String text;
// 生成随机的颜色
private Color randomColor() {
int red = r.nextInt(150);
int green = r.nextInt(150);
int blue = r.nextInt(150);
return new Color(red, green, blue);
}
// 生成随机的字体
private Font randomFont() {
int index = r.nextInt(fontNames.length);
String fontName = fontNames[index];//生成随机的字体名称
int style = r.nextInt(4);//生成随机的样式, 0(无样式), 1(粗体), 2(斜体), 3(粗体+斜体)
int size = r.nextInt(5) + 24; //生成随机字号, 24 ~ 28
//Font对象的参数:1.字体名称2.字体样式3.字体大小
return new Font(fontName, style, size);