时间:2021-05-20
1.情景展示
登录时,生成随机验证码图片,如何实现?
2.原因分析
后台生成验证码并生成图片返回至前台
3.解决方案
导包
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;获取验证码请求处理
/*** 获取验证码* @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片段
<img src="<c:url value="/getImage.do"/>" id="randomImage" style="cursor: pointer;vertical-align: bottom" height="35px" width="100px" onclick='sjs()' />js片段
function sjs () {// 获取图片请求后面加一个随机参数,是为了避免同一个请求浏览器拒绝向服务器发送请求的问题(缓存)$("#randomImage")[0].src = baseUrl + "/getImage.do?s=" + Math.random();};写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
本文作者:Marydon
原文链接:https:///Marydon20170307/p/12807842.html
以上就是Java 生成随机验证码图片的示例的详细内容,更多关于Java 生成验证码的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java生成验证码的流程是:收到请求->生成验证码所用的随机数->使用随机数写出图片->将随机数记录到Session中->输出验证码Java验证验证码的流程是:
后台Java代码【验证码生成】/***随机生成6位随机验证码*/publicstaticStringcreateRandomVcode(){//验证码Strin
实现步骤1:Java后台生成一张随机数字/字母/汉字验证码的图片。2:存入redis或者session。3:用户输入验证码跟redis取出数据做比对。图片生成工
关于java图片验证码的文章最近更新了不少,帮助大家掌握java验证码的生成技术,下文为大家分享了java生成图片验证码最简单的方法,供大家参考。现在各行业在定
前言Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片。Pillow的用法参考:验证码是随机的,使用Python内置的random库来生成随机