1、验证码代码学习 255) fc = 255; if (bc 255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); % /设置页面不缓存 response.setHeader(Pragma, No-cache); response.setHeader(Cache-Control, no-cache); response.setDateHead
2、er(Expires, 0); / 在内存中创建图象 int width = 60, height = 20; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); / 获取图形上下文 Graphics g = image.getGraphics(); /生成随机类 Random random = new Random(); / 设定背景色 g.setColor(getRandColor(200, 250); g.fillRect(0, 0, width, height); /设定
3、字体 g.setFont(new Font(Times New Roman, Font.PLAIN, 18); /画边框 /g.setColor(new Color(); g.drawRect(0,0,width-1,height-1); / 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160, 200); for (int i = 0; i 155; i+) int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextIn
4、t(12); int yl = random.nextInt(12); g.drawLine(x, y, x + xl, y + yl); / 取随机产生的认证码(4位数字) String sRand = ; for (int i = 0; i 上面是jsp页面中的验证码下面是servlet中的验证码Java code package comm;import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util
5、.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; public cl
6、ass ImageServlet extends HttpServlet private static final long serialVersionUID = 1L; /验证码值 private static String value; / 验证码图片的宽度。 private int width = 63; / 验证码图片的高度。 private int height = 20; / 验证码字符个数 private int codeCount = 4; / 字体高度 private int fontHeight; / 验证码随机数字 char codeSequence = A, B, C,
7、 D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ; /* * 初始化验证图片属性 */ public void init() throws ServletException / 从web.xml中获取初始信息 / 宽度 String strWidth = this.getInitParameter(width); / 高度 String strHeight = this.getInitParameter(height); / 字符个数 Strin
8、g strCodeCount = this.getInitParameter(codeCount); / 将配置的信息转换成数值 try if (strWidth != null & strWidth.length() != 0) width = Integer.parseInt(strWidth); if (strHeight != null & strHeight.length() != 0) height = Integer.parseInt(strHeight); if (strCodeCount != null & strCodeCount.length() != 0) codeCo
9、unt = Integer.parseInt(strCodeCount); catch (NumberFormatException e) fontHeight = height - 2; protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException HttpSession session = req.getSession(); / 定义图像buffer BufferedImage buffImg = new Buffer
10、edImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); / 创建一个随机数生成器类 Random random = new Random(); / 将图像填充随即背景颜色 (指定范围) g.setColor(getRandColor(200, 250); g.fillRect(0, 0, width, height); / 创建字体,字体的大小应该根据图片的高度来定。 Font font = new Font(Fixedsys, Font.PLAIN, fontHe
11、ight); / 设置字体。 g.setFont(font); / 画边框。 g.drawRect(0, 0, width - 1, height - 1); / 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160, 200); for (int i = 0; i 155; i+) int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.dr
12、awLine(x, y, x + xl, y + yl); / randomCode用于保存随机产生的验证码,以便用户登录后进行验证。 StringBuffer randomCode = new StringBuffer(); int red = 0, green = 0, blue = 0; / 随机产生codeCount数字的验证码。 for (int i = 0; i 255) fc = 255; if (bc 255) bc = 255; int r = fc + random.nextInt(bc - interval); int g = fc + random.nextInt(bc - interval); int b = fc + random.nextInt(bc - interval); return new Color(r, g, b); /* * ajax验证图片验证码 (页面使用此验证图片验证码是否正确,返回Boolean) * param imgvalue * return */ public boolean getValidateValue(String imgvalue) /转换为统一的大写比较,用户可以不用管大小写 return imgvalue.toUpperCase().equals(value);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1