java web使用session实现使用注册码码登录

这篇博客介绍了如何在Java Web应用中使用Session来处理7位纯数字注册码的登录流程。首先展示了生成验证码的代码,生成了注册码8996870,然后阐述了用户点击登录后,系统如何进行后续的代码处理。
摘要由CSDN通过智能技术生成
众所周知,注册码的作用是为了防止机器人登录和暴力软件的对于密码的暴力破解。那么注册码图片到底如何生成的,又如何运用的呢?本文旨在探讨在java web中注册码的生成和使用的过程。

7位纯数字注册码图片的生成代码段:

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		   /*设置浏览器不要缓存图片*/
		  response.setHeader("Expires", "-1");
		  response.setHeader("Cache-Control", "no-cache");
		  response.setHeader("Pragma", "no-cache");
		    /*生成注册码图片*/
		  BufferedImage  image=new BufferedImage( 80, 20,BufferedImage.TYPE_INT_RGB);
		  Graphics2D g=(Graphics2D)image.getGraphics();
		   /*设置图片的背景色*/
		   g.setColor(Color.WHITE);
		   g.fillRect(0, 0, 80, 20);
		   /*设置验证码的颜色和字体*/
		   g.setColor(Color.RED);
		   g.setFont(new Font(null,Font.BOLD,20));
		   /*生成简易的验证码,为7位数字,并将值写入seesion中*/
		   String num=makenum();
		   request.getSession().setAttribute("checkcode", num);
		   g.drawString(num, 0, 20);
		   /*将图片发送给浏览器*/
		   response.setContentType("image/jpeg");
		   ImageIO.write(image, "jpg", response.getOutputStream());
	}
	/*7位数字验证码生成函数*/
	   public String makenum() {
		// TODO Auto-generated method stub
		Random random=new Random();
		String num=Integer.toString(random.nextInt(9999999));
		StringBuffer  zeros = new StringBuffer();
		for(int i=0;i<7-num.length();i++)
		{
			zeros.append("0");
			
		}
		
		return num+zeros;
	}
	


简易的注册界面:


可以看到生成的验证码是:8996870

点击登录,转到如下代码段处理:

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		  /*设置浏览器的解码格式是utf-8*/
		  response.setContentType("text/html;charset=utf-8");
		  PrintWriter out=  response.getWriter();
		   /*获取浏览器提交的验证码*/
           String client_checkcode= request.getParameter("checkcode");
           String server_checkcode=(String)request.getSession().getAttribute("checkcode");
           /*判断验证码错误的情况
           1.客户机没有携带验证码
           2.服务器没有生成验证码,即没有登录请求
           3.客户机的验证码和服务器的验证码不相等
           */
            if(client_checkcode==null||server_checkcode==null||!server_checkcode.equals(client_checkcode))
            	{
            	out.write("验证码错误");
            	return;
            	}    	
            out.write("登录成功");
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值