最精简验证码生产代码

来源:互联网 发布:中国美食 知乎 编辑:程序博客网 时间:2024/06/10 03:21
public void produceVerifyCode(HttpServletRequest request,
HttpServletResponse response)throws IOException,ServletException{
BufferedImage img = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g = img.getGraphics();
Color c = new Color(245,245,245);
g.setColor(c);
g.fillRect(0, 0, width, height);
StringBuffer sb = new StringBuffer();
Random r = new Random();
char[] ch = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
int index = 6;
int len = 6;
for(int i=0;i<len;i++){
index = r.nextInt(len);
g.setColor(new Color(r.nextInt(128),r.nextInt(68),r.nextInt(25)));
g.setFont(new Font("Arial",Font.BOLD|Font.ITALIC,22));
g.drawString(""+ch[index], i*15+3, 18);
sb.append(ch[index]);

}

for(int i=0;i<100;i++){

int x = r.netInt(10);

int y = r.nextInt(10);

int x1 = r.nextInt(5);

int y1 = r.nextInt(5);

g.drawLine(x,y,x1,y1);

}

ILogger.newInstance().info("生成验证码:["+sb.toString()+"]");
request.getSession().setAttribute("verifyCode", sb.toString());
ImageIO.write(img, "jpeg", response.getOutputStream());
}