简单验证码的使用

我使用的是一个工具jsp页面

image.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@page import="java.awt.Graphics2D"%>
<%@page import="java.awt.Color"%>
<%@page import="java.awt.Font"%>
<%@page import="javax.imageio.ImageIO"%>

<%
	int width = 60;
	int height = 20;
	// 创建具有可访问图像数据缓冲区的Image
	BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	Graphics2D g = buffImg.createGraphics();
	
	// 创建一个随机数生成器
	Random random = new Random();
	
	g.setColor(Color.WHITE);
	g.fillRect(0, 0, width, height);
	
	// 创建字体,字体的大小应该根据图片的高度来定
	Font font = new Font("Times New Roman", Font.PLAIN, 24);
	// 设置字体
	g.setFont(font);
	
	// 画边框
	g.setColor(Color.BLACK);
	g.drawRect(0, 0, width - 1, height - 1);
	
	// 随机产生160条干扰线
	g.setColor(Color.LIGHT_GRAY);
	for (int i = 0; i < 160; 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);
	}
	
	// randomCode 用于保存随机产生的验证码
	StringBuffer randomCode = new StringBuffer();
	int red = 0, green = 0, blue = 0;
	
	// 随机产生4位数字的验证码
	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 = request.getSession();
	session.setAttribute("randomCode", randomCode.toString());
	
	// 禁止图像缓存
	response.setHeader("Pragma", "no-cache");
	response.setHeader("Cache-Control", "no-cache");
	response.setDateHeader("Expires", 0);
	
	response.setContentType("image/jpeg");
	// 将图像输出到servlet输出流中
	ServletOutputStream sos = response.getOutputStream();
	ImageIO.write(buffImg, "jpeg", sos);
	sos.close();
	//sos = null;
	out.clear();
	out = pageContext.pushBody();
%>

 

 

使用

 <div class="chknumber">
        <label>验证码:š
        <input type="text" name="user.imageCode" id="chknumber" maxlength="4" class="chknumber_input" />
        </label>
        <img src="<%=request.getContextPath()%>/common/image.jsp" height="15"/>
      </div>

 

    在登录页面加载时在jsp页面随机生成四位数字 ,并将数字打印在图片上显示出来,同时将数字保存在session中,我这保存起名用 randomCode 登录验证时就可以 

String imageCode = (String) session.getAttribute("randomCode");

 做对比,

 

 效果

  

 

   

 

 

 

你可能感兴趣的:(验证码)