一 controller端代码
@RequestMapping(value = "/captcha")
public void imagecode(HttpServletRequest request, HttpServletResponse response) throws Exception {
JSONObject object = new JSONObject();
CaptchaGenerator vcg = new CaptchaGenerator();
String vcode = vcg.generatorVCode();
BufferedImage vcodeImage = vcg.generatorVCodeImage(vcode, true);
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
response.addHeader("code", vcode.toLowerCase());
try {
ImageIO.write(vcodeImage, "png", outputStream);
BASE64Encoder encoder = new BASE64Encoder();
String base64 = encoder.encodeBuffer(outputStream.toByteArray()).trim();
base64 = base64.replaceAll("\n", "").replaceAll("\r", "");
object.put("code", "data:image/jpg;base64," + base64);
response.getWriter().write(object.toString());
} catch (IOException e) {
response.getWriter().write("");
} finally {
if (outputStream != null) {
outputStream.flush();
outputStream.close();
response.getWriter().close();
}
}
}
二 生成验证码的代码
(从某博客拷过来直接用的)
package com.kinth.security.web.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
/**
* 验证码生成器
*
*
*/
public class CaptchaGenerator {
/**
* 验证码来源
*/
final private char[] code = {
'2', '3', '4', '5', '6', '7', '8', '9',
'a', '