java 制作验证码并进行验证实例详解
java制作验证码并进行验证实例详解
在注册、登录的页面上经常会出现验证码,为了防止频繁的注册或登录行为。下面是我用java制作的一个验证码,供初学者参考,做完验证码之后,我们可以用ajax进行验证码验证。
功能一:验证码制作的代码,点击图片,验证码进行更换
/**
*显示验证码图片
*/
publicvoidshowCheckCode(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
//调用业务逻辑
StringcheckCode=getCheckCode();
//将验证码字符放入session域对象中
req.getSession().setAttribute("checkCode",checkCode);
//图片宽
intwidth=80;
//图片高
intheight=30;
//在内存中创建一个图片
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//获取一个画笔
Graphicsg=image.getGraphics();
//设置画笔颜色,用灰色做背景
g.setColor(Color.GRAY);
//向Image中填充灰色
g.fillRect(0,0,width,height);
Randomr=newRandom();
//设置3条干扰线
for(inti=0;i<3;i++){
g.setColor(newColor(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
g.drawLine(r.nextInt(80),r.nextInt(30),r.nextInt(80),r.nextInt(80));
}
//设置验证码字符串的颜色
g.setColor(newColor(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
//设置字符的大小
g.setFont(newFont("黑体",Font.BOLD,24));
//在图片中写入验证码字符串
g.drawString(checkCode,15,20);
//将Image对象以PNG格式输出给所有的客户端
ImageIO.write(image,"PNG",resp.getOutputStream());
}
/**
*获取4位验证码中的4位随机字符串
*/
publicstaticStringgetCheckCode(){
//验证码中的字符由数字和大小写字母组成
Stringcode="0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
Randomr=newRandom();
StringBuffersb=newStringBuffer();
for(inti=0;i<4;i++){
sb.append(code.charAt(r.nextInt(code.length())));
}
returnsb.toString();
}
jsp页面
functionchangeCodeImage(img){ img.src="http://dh.wk163.comhttp://dh.wk163.com${pageContext.request.contextPath}/UserServlet?method=showCheckCode&time="+newDate().getTime(); } 验证码