如何生成验证码图片?
通过这个servlet生成验证码图片,并将验证码以字符串的形式存入SelectSession!!
/** * 负责生成验证码图片,并将验证码字符串信息存入到session中 * @author 蔡俊伟 * */ public class ValidCodeServlet extends HttpServlet{ @Override public void service(HttpServletRequest request,HttpServletResponse response) throws IOException { //获取一张图片 BufferedImage image = new BufferedImage(200,100,BufferedImage.TYPE_INT_RGB); //生成一个画笔 Graphics2D graphics = image.createGraphics(); //设置画笔的颜色 graphics.setColor(Color.WHITE); //填充一个矩形空间 graphics.fillRect(0, 0, 200, 100); Random random = new Random(); //生成一个0到9的随机数集合 List<Integer> validCodeList = new ArrayList<Integer>(); for(int i=0;i<4;i++) { validCodeList.add(random.nextInt(10)); } //生成一个随机颜色集合 List<Color> colorList = new ArrayList<Color>(); colorList.add(Color.BLACK); colorList.add(Color.BLUE); colorList.add(Color.GREEN); colorList.add(Color.RED); colorList.add(Color.YELLOW); //设置字体 graphics.setFont(new Font("font",Font.BOLD|Font.PLAIN,40)); //在image图片中写入数字 for(int i=0;i<validCodeList.size();i++) { //在颜色集合中随便获取一个颜色 graphics.setColor(colorList.get(random.nextInt(colorList.size()))); //写入数字 graphics.drawString(validCodeList.get(i)+"",i*40+5, 70+random.nextInt(31)-10); } //画两条横线 for(int i=0;i<3;i++) { graphics.setColor(colorList.get(random.nextInt(colorList.size()))); graphics.drawLine(0, 50+random.nextInt(30), 200, 50+random.nextInt(30)); } //将四个验证码以字符串存入session request.getSession().setAttribute("validCode",""+validCodeList.get(0)+validCodeList.get(1)+validCodeList.get(2)+validCodeList.get(3)); //将验证码图片响应给浏览器 ServletOutputStream outputStream = response.getOutputStream(); ImageIO.write(image, "jpg", outputStream); } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步