#验证码编写#最简单的验证码demo 需要用到的类包含BufferedImage代表画布,Graphics代表画笔,画笔在每次绘画内容时需要考虑是否重新设置画笔颜色,绘画的原点坐标为显示器的左上角开始即(0,0).大部分设置都在画笔中。
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int width = 100;
int height = 50;
int x = 0;
int y = 0 ;
//缓冲图,缓冲图默认背景色为黑色
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//画笔
Graphics g = bi.getGraphics();
//设置画笔颜色
g.setColor(Color.YELLOW);
//填充矩形
g.fillRect(x, y, width, height);
//设置画笔颜色
g.setColor(Color.BLUE);
//绘矩形,非填充矩形边框
g.drawRect(x, y, width - 1, height - 1);
//设置字体
g.setFont(new Font("宋体",Font.BOLD,18));
//设置画笔颜色
g.setColor(Color.RED);
x = 10;
y = 20;
for(int i = 0 ;i<4;i++){
//随即选取字符
Random r = new Random();
Character c = letter.charAt(r.nextInt(letter.length()));
//绘画字符
g.drawString(c+"", x, y);
//横坐标每次向左移动 20px
x += 20;
}
//释放资源
g.dispose();
//回写给客户端
ImageIO.write(bi, "jpg", response.getOutputStream());
}