java生成图片验证码示例程序
发布时间:2020-12-14 14:13:16 所属栏目:Java 来源:网络整理
导读:复制代码 代码如下: %@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% html head meta http-equiv="Content-Type" content="text/html; charset=UTF-8" title登陆页面/title script type="text/javascript" function
复制代码 代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登陆页面</title> <script type="text/javascript"> function refresh() { loginForm.image.src = "creatImage.jsp"; } </script> </head> <body> <h1>欢迎登陆本系统</h1><br> <form action="" method = "post" name="loginForm"> <label>账号:<input name="username" type="text" /></label><br> <label>密码:<input name="password" type="password" /></label><br> <label>验证码:<input name="code" type="text" /></label> <!-- 将验证码当做图片处理 --> <img name="image" border="0" src="creatImage.jsp" onclick="refresh()" /> <input type="submit" value="登陆" /> </form> </body> </html> 复制代码 代码如下: <%@page import="java.util.Random"%> <%@page import="java.awt.Graphics"%> <%@page import="javax.imageio.*"%> <%@page import="java.awt.*"%> <%@page import="java.awt.image.BufferedImage"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% final char[] str = {'0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q', 'r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H', 'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; int width=100,height=60; BufferedImage bi = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); Graphics g = bi.getGraphics(); g.setColor(new Color(200,200,200)); g.fillRect(0,width,height); Random rnd = new Random(); StringBuffer sb = new StringBuffer(""); //产生四位数的字母数字验证码,各个数字的颜色也随即 for(int i=0; i<4; i++) { int num = rnd.nextInt(str.length); Color c = new Color(rnd.nextInt(256), rnd.nextInt(256),rnd.nextInt(256)); g.setColor(c); g.setFont(new Font("",Font.BOLD+Font.ITALIC,20)); g.drawString(str[num]+"",10,17); sb.append(str[num]); } //划干扰线 for(int i=0; i<10; i++) { Color c = new Color(rnd.nextInt(256),rnd.nextInt(256)); g.setColor(c); g.drawLine(rnd.nextInt(width),rnd.nextInt(height), rnd.nextInt(width),rnd.nextInt(height)); } String s = new String(sb); /* 若是产生四位数字,则nextInt(8999) + 1000; 然后String.valueOf转换为String */ //验证码存入session里,方便在登陆校检页比对 session.setAttribute("image",s); //输出到页面 ImageIO.write(bi,"JPEG",response.getOutputStream()); /* 加入下面这两句什么作用呢? 否则报异常: java.lang.IllegalStateException: getOutputStream() has already been called for this response 不管原因了 */ out.clear(); out = pageContext.pushBody(); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>图片生成</title> </head> <body> </body> </html> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 错误:无法找到或加载主类-Xmx1G
- java – 当我有@ManyToMany时如何设置ForeignKey名称
- 使用Retrofit和RxJava下载并编写文件
- java – Spring:异常启动过滤器springSecurityFilterChain
- java – nextDouble()在输入double时抛出InputMismatchExce
- 为zookeeper配置相应的acl权限
- java – Eclipse控制台异常颜色
- java – 如何防止Web服务API中的并发?
- Java / Spring应用程序无法在cloudfoundry上启动:OutOfMem
- java – Jersey测试框架2.5 – 测试POST方法