生成驗證碼模板
阿新 • • 發佈:2018-11-08
@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); } }