JAVA编写最简单的登录验证码

使用JAVA的awt包可以提供创建和修改图像的各种类。使用流框架来处理图像,该框架涉及图像生产者、可选的图像过滤器和图像使用者。

 

有了强大的awt包就可以做一个简单的登录验证码了,先看一下效果图:

废话不多说

其实登录验证码他不是一个固定的图片,他只是一个java代码向jsp页面输出的图片流而已。

首先需要在登录页面使用<img>标签,在src中链接到编程好的jsp页面。

其中这个jsp页面是最重要的,以下是代码

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

<%
	//创建一个图像缓冲区对象  相当于一张纸   参数分别为 宽、高、图像类型
	BufferedImage bi = new BufferedImage(60, 20,BufferedImage.TYPE_USHORT_555_RGB);
	//得到制图对象   相当于你得到了一支笔 
	Graphics g = bi.getGraphics();
	//设置 上下文颜色  相当于背景颜色
	g.setColor(Color.GREEN);
	//进行填充  x、y、width、height
	g.fillRect(0, 0, 60, 20);
	
	Random rd = new Random();
	//干扰纹
	g.setColor(Color.GRAY);
	//15条干扰纹
	for (int i = 0; i < 15; i++) {
		g.drawLine(rd.nextInt(61), rd.nextInt(21), rd.nextInt(61), rd.nextInt(21));
	}

	//设置验证码

	String code = "";
	String str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";
	for (int i = 0; i < 4; i++) {
		code += str.charAt(rd.nextInt(str.length()));
	}
	
	request.getSession().setAttribute("code",code);
	//设置字的颜色
	g.setColor(Color.BLUE);
	//设置字体 
	g.setFont(new Font("黑体", Font.BOLD, 18));
	//在图像上下文开始画由String的文本
	g.drawString(code, 10, 15);

	//使用图片输出流  输出(纸,格式,输出方式)
	ImageIO.write(bi, "jpeg", response.getOutputStream());
	out.clear();
	out = pageContext.pushBody();
%>

 当上面的代码都已经搞定之后,回到你需要加入验证码的页面

<img id="img" src="刚才完成的验证码页面链接" alt="点击更换" width="60" height="20" οnclick="refreshImg();"/>

 最后我加入了一个点击事件用于再次刷新验证码,差不多一个简单的验证码就完成了!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值