Response_验证码_分析以及代码实现
本质:图片
目的:防止恶意表单注册
步骤:
1.创建对象,在内存中图片(验证码图片对象)
2.美化图片
3.将图片输出到页面展示
package com.example.servlet; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; @WebServlet(name = "ResponseDemo5", value = "/ResponseDemo5") public class ResponseDemo5 extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override 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.美化图片 //2.1填充背景色 Graphics g = image.getGraphics();//画笔对象 g.setColor(Color.PINK);//设置画笔颜色 g.fillRect(0, 0, width, height); //2.2画边框 g.setColor(Color.BLACK); g.drawRect(0, 0, width - 1, height - 1); String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789"; //生成随机角标 Random ran = new Random(); for (int i = 1; i <= 4; i++) { int index = ran.nextInt(str.length()); //获取字符 char ch = str.charAt(index);//随机字符 //2.3验证码 g.drawString(ch+"", width/5*i, height/2); } //2.4画干扰线 g.setColor(Color.GREEN); //随机生成坐标点 for (int i = 0; i < 10; i++) { int x1 = ran.nextInt(width); int x2 = ran.nextInt(width); int y1 = ran.nextInt(height); int y2 = ran.nextInt(height); g.drawLine(x1, x2, y1, y2); } //3.将图片输出到页面展示 ImageIO.write(image, "jpg", response.getOutputStream()); } }
标签:BufferedImage,java,代码,验证码,javax,import,height,servlet,Response From: https://www.cnblogs.com/qihaokuan/p/16964315.html