使用Java如何实现随机生成验证码图片

  介绍

使用Java如何实现随机生成验证码图片?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强> 1。情景展示

使用Java如何实现随机生成验证码图片

登录时,生成随机验证码图片,如何实现?,,

<强> 2。原因分析

后台生成验证码并生成图片返回至前台,

<强> 3。解决方案

导包

进口java.awt.Color;
  进口属性;
  进口java.awt.Graphics;
  进口java.awt.image.BufferedImage;
  进口java.util.Random;
  进口javax.imageio.ImageIO;
  进口javax.servlet.ServletOutputStream;
  进口javax.servlet.http.Cookie;
  进口javax.servlet.http.HttpServletResponse;
  进口org.apache.commons.lang.RandomStringUtils;
  进口base.web.tools.WebUtils; 

获取验证码请求处理

/* *   ,*获取验证码   ,* @explain   ,* @return随机数图片   ,*/公共字符串getImage () {   ,,,试着{   ,,,,,,,int宽度=55;   ,,,,,,,int高度=25;   ,,,,,,,//取得一个4位随机数字字符串   ,,,,,,,字符串s=RandomStringUtils.randomNumeric (4);   ,,,,,,,=WebUtils.getResponse HttpServletResponse反应();   ,,,,,,,//存入饼干,用于与用户的输入进行比较   ,,,,,,,曲奇饼干=new饼干(“validateCode" s);   ,,,,,,,response.addCookie(饼干);   ,,,,,,,response.setContentType(“图像/jpeg");   ,,,,,,,response.setHeader (“Cache-Control",“no-cache");   ,   ,,,,,,,=response.getOutputStream ServletOutputStream出来();   ,,,,,,,=new BufferedImage BufferedImage图像(宽度、高度,BufferedImage.TYPE_INT_RGB);   ,,,,,,,图形g=image.getGraphics ();   ,,,,,,,//设定背景色   ,,,,,,,g。改变颜色(getRandColor (200、250));   ,,,,,,,g。fillRect(0, 0,宽度、高度);   ,   ,,,,,,,//设置字体   ,,,,,,,字体mFont=新字体(“宋体“,字体。大胆、18);   ,,,,,,,g.setFont (mFont);   ,   ,,,,,,,//画边框   ,,,,,,,//g.setColor (Color.BLACK);   ,,,,,,,//g。宽度绘制矩形(0,0,- 1,- 1)高度;   ,   ,,,,,,,//生成随机类   ,,,,,,,随机随机=new随机();   ,,,,,,,//将认证码显示到图象中   ,,,,,,,g。改变颜色(新颜色(20 + random.nextInt (110), 20 + random.nextInt (110), 20 + random.nextInt (110)));   ,,,,,,,//将验证码画进图片   ,,,,,,,g。拉带(20年代5);   ,,,,,,,//图象生效   ,,,,,,,g.dispose ();   ,,,,,,,//输出图象到页面   ,,,,,,,ImageIO.write ((BufferedImage)形象,“JPEG",);   ,,,,,,,out.flush ();   ,,,,,,,out.close ();   ,,,}捕捉(异常e) {   ,,,,,,,e.printStackTrace ();   ,,,}   ,,,返回null。   }   ,/* *   ,*给定范围获得随机颜色   ,* @explain   * @param fc   * @param bc   ,* @return   ,*/私人颜色getRandColor(公元前int fc, int) {   ,,,随机随机=new随机();   ,,,fc=(fc祝辞255),# 63;255年:fc;   公元前,,,=(公元前祝辞255),# 63;公元前255年:;   ,,,//获取3次   ,,,int r=fc +随机的。nextInt (bc - fc);   ,,,int g=fc +随机的。nextInt (bc - fc);   ,,,int b=fc +随机的。nextInt (bc - fc);   ,,,返回新颜色(r, g, b);   }

html片段

& lt; img src=https://www.yisu.com/zixun/" value="/getImage " id=" randomImage "高度=?5像素宽度=?00 px”>函数sj () {   ,,,//获取图片请求后面加一个随机参数,是为了避免同一个请求浏览器拒绝向服务器发送请求的问题(缓存)   ,,,(“# randomImage")美元[0]。src=https://www.yisu.com/zixun/baseUrl + "/getImage.do& # 63; s=" + math . random ();   };

看完上述内容,你们掌握使用Java如何实现随机生成验证码图片的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

使用Java如何实现随机生成验证码图片