JAVA编写最简单的登录验证码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用JAVA的awt包可以提供创建和修改图像的各种类。使用流框架来处理图像,该框架涉及图像生产者、可选的图像过滤器和图像使用者。
有了强大的awt包就可以做一个简单的登录验证码了,先看一下效果图:
废话不多说
其实登录验证码他不是一个固定的图片,他只是一个java代码向jsp页面输出的图片流而已。
首先需要在登录页面使用标签,在src中链接到编程好的jsp页面。
其中这个jsp页面是最重要的,以下是代码
Jsp代码
1<%@ page language="java" import="java.util.*"
pageEncoding="UTF-8"%>
2<%@ page language="java" import="java.awt.image.*"%>
3<%@ page language="java" import="java.awt.*"%>
4<%@ page language="java" import="javax.imageio.*"%>
5
6<%
7 //创建一个图像缓冲区对象相当于一张纸参数分别为宽、高、
图像类型
8 BufferedImage bi = new BufferedImage(60,
20,BufferedImage.TYPE_USHORT_555_RGB);
9 //得到制图对象相当于你得到了一支笔
10 Graphics g = bi.getGraphics();
11 //设置上下文颜色相当于背景颜色
12 g.setColor(Color.GREEN);
13 //进行填充 x、y、width、height
14 g.fillRect(0, 0, 60, 20);
15
16 Random rd = new Random();
17 //干扰纹
18 g.setColor(Color.GRAY);
19 //15条干扰纹
20 for (int i = 0; i < 15; i++) {
21 g.drawLine(rd.nextInt(61), rd.nextInt(21),
rd.nextInt(61), rd.nextInt(21));
22 }
23
24 //设置验证码
25
26 String code = "";
27 String str =
"qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";
28 for (int i = 0; i < 4; i++) {
29 code += str.charAt(rd.nextInt(str.length()));
30 }
31
32 request.getSession().setAttribute("code",code);
33 //设置字的颜色
34 g.setColor(Color.BLUE);
35 //设置字体
36 g.setFont(new Font("黑体", Font.BOLD, 18));
37 //在图像上下文开始画由String的文本
38 g.drawString(code, 10, 15);
39
40 //使用图片输出流输出(纸,格式,输出方式)
41 ImageIO.write(bi, "jpeg", response.getOutputStream());
42 out.clear();
43 out = pageContext.pushBody();
44%>
当上面的代码都已经搞定之后,回到你需要加入验证码的页面
Html代码
45
width="60" height="20" onclick="refreshImg();"/>
最后我加入了一个点击事件用于再次刷新验证码,差不多一个简单的验证码就完成了!