java 生成验证码,java验证码,/** * */pac
分享于 点击 33209 次 点评:122
java 生成验证码,java验证码,/** * */pac
/** * */package com.becom.dkyd.webapp.util;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.becom.dkyd.common.Constant;public class RandomCodeServlet extends HttpServlet{ /** * serialVersionUID */ private static final long serialVersionUID = 5916019367240722024L; private int width = 60; private int height = 20; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = img.createGraphics(); Random random = new Random(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); Font font = new Font("Times New Roman", Font.PLAIN, 18); g.setFont(font); // 边框 g.setColor(Color.BLACK); g.drawRect(0, 0, width - 1, height - 1); // 干扰线 g.setColor(Color.GRAY); for (int i = 0; i < 60; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int x1 = random.nextInt(12); int y1 = random.nextInt(12); g.drawLine(x, y, x + x1, y + y1); } // 保存验证码 StringBuffer randomCode = new StringBuffer(); int red = 0; int green = 0; int blue = 0; // 生成验证码 for (int i = 0; i < 4; i++) { String strRand = String.valueOf(random.nextInt(10)); red = random.nextInt(110); green = random.nextInt(50); blue = random.nextInt(50); g.setColor(new Color(red, green, blue)); g.drawString(strRand, 13 * i + 6, 16); randomCode.append(strRand); } // 验证码放入session中 HttpSession session = req.getSession(); //需要验证的地方 //加入session // 禁止图象缓存 resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control", "no-cache"); resp.setDateHeader("Expires", 0); resp.setContentType("image/jpeg"); // 输出图象 ServletOutputStream sos = resp.getOutputStream(); ImageIO.write(img, "jpeg", sos); sos.close(); }}
用户点评