Response验证码案例的分析和代码实现
Response验证码案例的分析
本质:是一张图片
目的:防止恶意表单注册
步骤:
1、创建一对象,在内存中画图(验证码图片对象)
2、美化图片
3、将图片输出到页面展示
@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int width = 100;
int height = 50;
//1、创建一对象,在内存中画图(验证码图片对象)
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//2、美化图片
//填充背景色
Graphics g = image.getGraphics();
g.setColor(Color.PINK);
g.fillRect(0,0,width,height);
//画边框
g.setColor(Color.BLUE);
g.drawRect(0,0,width-1,height-1);
//写验证码
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789";
//生成随机角标
Random ra = new Random();
for (int i = 1; i <= 4; i++) {
int index = ra.nextInt(str.length());
//获取字符
char c = str.charAt(index);
//写验证码
g.drawString(c+"",width/5*i,height/2);
}
//画干扰线
g.setColor(Color.GREEN);
//随机生成坐标点
for (int i = 0; i < 10; i++) {
int x1 = ra.nextInt(width);
int x2 = ra.nextInt(width);
int y1 = ra.nextInt(height);
int y2 = ra.nextInt(height);
g.drawLine(x1,y1,x2,y2);
}
//3、将图片输出到页面展示
ImageIO.write(image,"jpg",response.getOutputStream());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}

浙公网安备 33010602011771号