用到的类:
BufferedImage :图像数据缓冲区
Graphics:绘制图片
Color:获取颜色
Random:生成随机数
ImageIO:输出图片
ImageServlet类 --生成图片实现类
定义BufferedImage对象
获得Graphics对象
通过Random产生随机验证码信息
使用Graphics绘制图片
记录验证码信息到session中
使用ImageIO输出图片
LoginServlet类 --检验验证码是否正确
获取页面验证码
获取session保存的验证码
比较验证码
返回校验效果
下面是一个Servlet
我用的是SpringMVC,当然你用普通的Servlet也是可以的。
@RequestMapping("ImageServlet")
public void ImageServlet(HttpServletRequest request, HttpServletResponse response) throws IOException {
//制造图片
BufferedImage image = new BufferedImage(68,22,BufferedImage.TYPE_INT_BGR);
Graphics graphics = image.getGraphics();
Color color = new Color(200,150,255);
graphics.setColor(color);
graphics.fillRect(0,0,68,22);
//图片内容
//随机获取四位字符
char[] ch="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
Random random = new Random();
int len = ch.length,index,i,num=4;
StringBuffer buffer = new StringBuffer();
for(i=0;i<num;i++){
index = random.nextInt(len);
graphics.setColor(new Color(random.nextInt(88),random.nextInt(188),random.nextInt(255)));
graphics.drawString(ch[index] + "",(i*15) + 3, 18);
buffer.append(ch[index]);
}
request.getSession().setAttribute("piccode",buffer.toString());
ImageIO.write(image,"JPG",response.getOutputStream());
}