生成验证码模板

@Controller
@RequestMapping("/images")
public class PicController {
	private int width = 100, height = 30;
	private String source = "1234567890";

	@RequestMapping("pic")
	public void showPic(HttpSession session, HttpServletResponse response) throws Exception {
		BufferedImage buffer = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		Graphics g = buffer.getGraphics();
		// 设定背景色
		g.setColor(Color.BLACK);
		g.fillRect(0, 0, width, height);

		// 画边框
		g.setColor(Color.RED);
		g.drawRect(2, 2, width - 6, height - 6);
		String checkcode = this.generateCheckcode(6);
		session.setAttribute("checkcode", checkcode);
		g.setFont(new Font("宋体", Font.BOLD, 22));
		g.setColor(new Color(55, 77, 200));
		g.drawString(checkcode, 10, height - 10);
		// 随机产生10个干扰点
		Random rand = new Random();
		for (int i = 0; i < 100; i++) {
			int x = rand.nextInt(width);
			int y = rand.nextInt(height);
			g.drawOval(x, y, 2, 1);
		}
		g.dispose();
		response.setHeader("pragme", "no-cache");
		response.setHeader("cache-control", "no-cache");
		response.setDateHeader("expires", -1);
		response.setContentType("image/jpeg");
		response.resetBuffer();
		ServletOutputStream sos = response.getOutputStream();
		ImageIO.write(buffer, "jpg", sos);
		sos.flush();
		sos.close();

	}
	private String generateCheckcode(int len) {
		char[] res = new char[len];
		Random r = new Random();
		for (int i = 0; i < len; i++) {
			res[i] = source.charAt(r.nextInt(source.length()));
		}
		return new String(res);
	}
}

你可以使用 Spring Boot 来生成验证码。以下是一个简单的示例: 1. 首先,添加以下依赖到你的 `pom.xml` 文件中: ```xml <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot Thymeleaf (如果你希望使用 Thymeleaf 模板引擎) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- Google Guava (用于生成随机字符串) --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1-jre</version> </dependency> </dependencies> ``` 2. 创建一个验证码生成器类,例如 `CaptchaGenerator`: ```java import com.google.common.base.Strings; import com.google.common.hash.Hashing; public class CaptchaGenerator { private static final int CAPTCHA_LENGTH = 6; public static String generateCaptcha() { String captcha = ""; while (Strings.isNullOrEmpty(captcha) || captcha.length() != CAPTCHA_LENGTH) { captcha = Hashing.sha256() .hashString(String.valueOf(Math.random()), Charsets.UTF_8) .toString() .replaceAll("[^0-9]", "") .substring(0, CAPTCHA_LENGTH); } return captcha; } } ``` 3. 创建一个 Spring Boot 控制器类,例如 `CaptchaController`: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class CaptchaController { @GetMapping("/captcha") public String getCaptcha() { return CaptchaGenerator.generateCaptcha(); } } ``` 4. 运行你的 Spring Boot 应用,并访问 `/captcha` 路径即可获取生成验证码。 这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。验证码生成器使用了 Google Guava 库来生成随机字符串,你也可以使用其他方法来生成验证码。同时,你还可以添加额外的逻辑来处理验证码的验证等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值