Java生成验证码的简单做法

本文介绍了一个简单的生成验证码图片的方法,包括创建包含随机字符的图片及如何通过Spring MVC控制器将其返回给客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先编写一个用于获取图片的工具类


public class ValidateImage {

	private static final int WIDTH = 60;
	private static final int HEIGHT = 20;
	
	private static Random random = new Random();
	
	public static Map<String, Object> getImage() {
		
		//用来储存结果返回的
		Map<String, Object> map = new HashMap<>();
		
		//创建一个空白的缓存图片
		BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
		
		//获取画笔
		Graphics graphics = image.getGraphics();
		
		//设置画笔颜色,字体大小,填充画布颜色等
		graphics.setColor(Color.GREEN);
		graphics.fillRect(0, 0, WIDTH, HEIGHT);
		graphics.setColor(Color.RED);
		graphics.setFont(new Font("微软雅黑", Font.PLAIN, 15));
		
		//获取随机验证码,同时写到图片上
		String code = getCode(graphics, 4);
		
		//把结果保存起来返回出去
		map.put("code", code);
		map.put("image", image);
		
		//返回结果
		return map;
	}
	
	private static String getCode(Graphics graphics, int length) {
		char [] codes = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray();
		String result = "";
		for(int i = 0; i < length; i++) {
			char temp = codes[random.nextInt(codes.length)];
			graphics.drawString(temp + "", i * 15, 15);
			result = result + temp;
		}
		return result;
	}
}


可以根据自己的需要进行更改,


2.编写获取验证码的 controller 类方法


@RequestMapping("/getImage")
	public void getImage(HttpSession session, HttpServletResponse response) {
		OutputStream os =null;
		try {
			Map<String, Object> map = ValidateImage.getImage();
			
			//把随机验证码存起来,用于你后面的比较
			Object code = map.get("code");
			System.out.println(code);
			session.setAttribute("code", code);
			
			//设置返回的格式并把图片返回
			BufferedImage image = (BufferedImage) map.get("image");
			
			response.setContentType("image/png");  
		    os = response.getOutputStream();  
		    ImageIO.write(image, "png", os);
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			//记得关闭流,形成一个好习惯
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	   
	}

虽然是基于springmvc的,但是处理方法其实还是调用了jdk的API


访问结果如下图所示




顺便提一下编写的时候遇到的一个maven 问题  install或发布项目如果出现以下的问题




这是因为eclipse与maven项目jdk不匹配的问题,解决方法是


右键项目找到  Maven --> UPdate project   点击OK 后,再右键   properties --》  projec facts 




然后再运行就成功了


但是每次mvn clean之后再 install 又会出现这个问题,暂时没找解决方案,尽量不要clean项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值