页面登录的验证码

一个简单的登录时候需要输入的验证码

  • jsp代码
<tr>
	<td>验证码:</td>
	<td>
 	 	<input type="text" name="validataCode" />
  		<img style="cursor:pointer;" title="点击更换" src="CodeServlet"
  	    	onclick="this.src = 'CodeServlet?'+Math.random();"/>
  		<span style="color:red">${requestScope.messagecode}</span>
	</td>
</tr>
  • CodeServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 此方法生成一张图片
		Random r = new Random();
		// 1.创建空白图片 长 宽 三原色
		BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);
		// 2.获取图片的画笔
		Graphics g = image.getGraphics();
		// 3.设置画笔的颜色 画背景
		g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
		// 4.绘制矩形画布 从(0,0) 开始画长100宽30
		g.fillRect(0, 0, 100, 30);
		// 5.调用有个自定义方法,获取一个长度为五的字母和数字的字符串
		String number = this.getNumber(5);
		// 6.把随机生成的验证码存储在session中
		HttpSession session = request.getSession();
		session.setAttribute("code", number);
		// 7.重新设置画笔, 画验证码
		// 颜色为黑色
		g.setColor(new Color(0, 0, 0));
		// 名称 样式 大小
		g.setFont(new Font(null, Font.BOLD, 24));
		// 8.绘制验证码 画的数字 位置(5,25)
		g.drawString(number, 5, 25);
		// 9.绘制八条干扰线 
		for (int i = 0; i < 8; i++) {
			//设置画线的画笔的颜色
			g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
			//从(x1,y1)滑到(x2,y2)
			g.drawLine(r.nextInt(100), r.nextInt(30), r.nextInt(100), r.nextInt(30));
		}
		//10.设置响应内容
		response.setContentType("image.html");
		OutputStream os = response.getOutputStream();
		//11.把image图片写到响应中(写到网络输输出流上)
		//				图片        图片格式      
		ImageIO.write(image, "jpeg", os);
		os.flush();
		os.close();
	}

	private String getNumber(int size) {
		String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
		String number = "";
		Random r = new Random();
		for (int i = 0; i < size; i++) {
			number += str.charAt(r.nextInt(str.length()));
		}
		return number;
	}

  • UserLoginServlet
	// 获取用户输入的验证码
	String validateCode = request.getParameter("validataCode");
	// 从session中获取系统生成的验证码
	HttpSession session = request.getSession();
	String code = session.getAttribute("code").toString();
	if (validateCode.equalsIgnoreCase(code)) {
		//登录的操作
		//如判断用户名密码是否正确以及做出相应的响应操作
	}else{
		request.setAttribute("messagecode", "验证码错误");
		request.getRequestDispatcher("login.jsp").forward(request, response);

	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值