引入依赖
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>
代码实现
package com.qiangesoft.captcha.controller;
import com.wf.captcha.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@RequestMapping("/captcha")
@RestController
public class MyCaptchaController {
public static final int TYPE_DEFAULT = 1;
public static final int TYPE_ONLY_NUMBER = 2;
public static final int TYPE_ONLY_CHAR = 3;
public static final int TYPE_ONLY_UPPER = 4;
public static final int TYPE_ONLY_LOWER = 5;
public static final int TYPE_NUM_AND_UPPER = 6;
@GetMapping("/arithmetic")
public void arithmetic(HttpServletResponse response) throws IOException {
setResponse(response, "arithmetic.jpg");
ArithmeticCaptcha arithmeticCaptcha = new ArithmeticCaptcha(150, 65);
arithmeticCaptcha.setLen(3);
arithmeticCaptcha.out(response.getOutputStream());
}
@GetMapping("/chinese")
public void chinese(HttpServletResponse response) throws IOException {
setResponse(response, "chinese.jpg");
ChineseCaptcha chineseCaptcha = new ChineseCaptcha(150, 65);
chineseCaptcha.setLen(4);
chineseCaptcha.out(response.getOutputStream());
}
@GetMapping("/chineseGif")
public void chineseGif(HttpServletResponse response) throws IOException {
setResponse(response, "chineseGif.gif");
ChineseGifCaptcha chineseGifCaptcha = new ChineseGifCaptcha(150, 65);
chineseGifCaptcha.setLen(4);
chineseGifCaptcha.out(response.getOutputStream());
}
@GetMapping("/gif")
public void gif(HttpServletResponse response) throws IOException {
setResponse(response, "gif.gif");
GifCaptcha gifCaptcha = new GifCaptcha(150, 65);
gifCaptcha.setLen(4);
gifCaptcha.setCharType(TYPE_ONLY_NUMBER);
gifCaptcha.out(response.getOutputStream());
}
@GetMapping("/spec")
public void spec(HttpServletResponse response) throws IOException {
setResponse(response, "spec.jpg");
SpecCaptcha specCaptcha = new SpecCaptcha(150, 65);
specCaptcha.setLen(4);
specCaptcha.out(response.getOutputStream());
}
private void setResponse(HttpServletResponse response, String fileName) {
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
}
}
测试