图片验证码的生成
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//6、设置头,控制浏览器不要缓存图片数据
response.setHeader("Expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("pragma", "no-cache");
//5、通知浏览器以图片的方式打开
response.setHeader("content-type", "image/jpeg");
//1、在内存中创建一幅图片
BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);
//2、得到图片
Graphics g = image.getGraphics();
//设置图片背景颜色
g.setColor(Color.WHITE);
g.fillRect(0, 0, 80, 20);
//3、向图片上写数据
g.setColor(Color.BLUE);
g.setFont(new Font(null,Font.BOLD,20));
g.drawString(makeNum(), 0, 20);
//4、将图片写给浏览器
ImageIO.write(image, "jpg", response.getOutputStream());
}
随机数的生成
//生成七位随机数的函数
private String makeNum() {
Random r = new Random();
String num = r.nextInt(9999999) + "";
StringBuffer sb = new StringBuffer();
for (int i=0;i<7-num.length();i++){
sb.append("0"); //不够七位的用“0”补充
}
num = sb.toString()+num; //字符串合并
return num;
}
中文验证码
- 将常用字的编码放到一个数组中,然后使用随机数调用即可。
网友评论