Java 生成随机验证码图片的示例
1.情景展示
登录时,生成随机验证码图片,如何实现?
2.原因分析
后台生成验证码并生成图片返回至前台
3.解决方案
导包
1 2 3 4 5 6 7 8 9 10 11 | import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.RandomStringUtils; import base.web.tools.WebUtils; |
获取验证码请求处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | /** * 获取验证码 * @explain * @return 随机数图片 */ public String getImage() { try { int width = 55 ; int height = 25 ; // 取得一个4位随机数字字符串 String s = RandomStringUtils.randomNumeric( 4 ); HttpServletResponse response = WebUtils.getResponse(); // 存入cookie,用于与用户的输入进行比较 Cookie cookie = new Cookie( "validateCode" , s); response.addCookie(cookie); response.setContentType( "images/jpeg" ); response.setHeader( "Cache-Control" , "no-cache" ); ServletOutputStream out = response.getOutputStream(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); // 设定背景色 g.setColor(getRandColor( 200 , 250 )); g.fillRect( 0 , 0 , width, height); // 设置字体 Font mFont = new Font( "宋体" , Font.BOLD, 18 ); g.setFont(mFont); // 画边框 // g.setColor(Color.BLACK); // g.drawRect(0, 0, width - 1, height - 1); // 生成随机类 Random random = new Random(); // 将认证码显示到图象中 g.setColor( new Color( 20 + random.nextInt( 110 ), 20 + random.nextInt( 110 ), 20 + random.nextInt( 110 ))); // 将验证码画进图片 g.drawString(s, 5 , 20 ); // 图象生效 g.dispose(); // 输出图象到页面 ImageIO.write((BufferedImage) image, "JPEG" , out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } return null ; } /** * 给定范围获得随机颜色 * @explain * @param fc * @param bc * @return */ private Color getRandColor( int fc, int bc) { Random random = new Random(); fc = (fc > 255 ) ? 255 : fc; bc = (bc > 255 ) ? 255 : bc; // 获取3次 int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); } |
html片段
1 | < img src = "<c:url value=" /getImage.do"/>" id="randomImage" style="cursor: pointer;vertical-align: bottom" height="35px" width="100px" onclick='sjs()' /> |
js片段
1 2 3 4 | function sjs () { // 获取图片请求后面加一个随机参数,是为了避免同一个请求浏览器拒绝向服务器发送请求的问题(缓存) $( "#randomImage" )[0].src = baseUrl + "/getImage.do?s=" + Math.random(); }; |
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
本文作者:Marydon
原文链接:https://www.cnblogs.com/Marydon20170307/p/12807842.html
以上就是Java 生成随机验证码图片的示例的详细内容,更多关于Java 生成验证码的资料请关注脚本之家其它相关文章!
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
从0到1构建springboot web应用镜像并使用容器部署的过程
这篇文章主要介绍了从0到1构建springboot web应用镜像并使用容器部署,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-03-03
最新评论