验证码有很多种实现方法,看来很多什么的都有,对于菜鸟的我来说看完一脸懵B,就想写个简单的、好理解的出来、今天要说的是在webservlet中写的
前端页面省略。。
生成验证码的代码:
//创建对象
BufferedImage image = new BufferedImage(60, 20, BufferedImage.TYPE_3BYTE_BGR);
//获取图案
Graphics g = image.getGraphics();
//颜色,这里是整个验证码图片背景的设置
Color c=new Color(200, 150, 255);
g.setColor(c);
g.fillRect(0, 0, 68, 22);
//随即用到的字符
char[] ch="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray();
//创建随机数对象
Random r=new Random();
StringBuffer buffer=new StringBuffer();
int len=ch.length,index;
for(int i=0;i<4;i++){
//随机数获取的范围在字符数组的长度范围内,回去一个index
index=r.nextInt(len);
//这里是随机产生的字符的位置和颜色,
g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
g.drawString(ch[index]+"", (i*15)+3, 18);
//将生成的验证码字符添加到buffer
buffer.append(ch[index]);
}
System.out.println(buffer.toString());//这里是我本地的一个测试
//将生成的验证码存到session中
// req.getSession().setAttribute("verifyCode", buffer.toString());
//返回到前端
// ImageIO.write(image, "JPG", resp.getOutputStream());
下面是前端输入跟生成验证码的对比代码:
/*
* 这段代码是对前端输入的验证码和产生的验证码的一个比较
* 是webselect写的
* */
* //获取到前端输入的验证码
String code=req.getParameter("verifyCode");
//这是存在session的验证码
String verifyCode=(String) req.getSession().getAttribute("verifyCode");
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out=resp.getWriter();
//比较
if(code.equals(verifyCode)){
out.println("验证码正确");
System.out.println("验证码正确");
}else{
out.println("验证码错误");
}
out.flush();
out.close();
生成大致都一样,自己根据实际当中的情况应用。