当前位置: 首页 > wzjs >正文

电子商务网站建设的主要内容美团网站建设总体需求与目标

电子商务网站建设的主要内容,美团网站建设总体需求与目标,衡水哪有做网站的,电子商务平台文章目录 手写验证码新建验证码工具类Controller中调用Apifox中验证 Hutool图形验证码引入依赖LineCaptcha:线段干扰的验证码CircleCaptcha:圆形干扰验证码ShearCaptcha:扭曲干扰验证码GifCaptcha:GIF验证码自定义验证码纯数字验证…

文章目录

  • 手写验证码
    • 新建验证码工具类
    • Controller中调用
    • Apifox中验证
  • Hutool图形验证码
    • 引入依赖
    • LineCaptcha:线段干扰的验证码
    • CircleCaptcha:圆形干扰验证码
    • ShearCaptcha:扭曲干扰验证码
    • GifCaptcha:GIF验证码
    • 自定义验证码
      • 纯数字验证码
      • 纯字母验证码
      • 四则运算验证码

这是一个登录页面,在登录的最后一部,很多时候都会让我们输入验证码,今天就来讲讲如何在SpringBoot中实现图形验证码的生成。验证码的生成是一个非常常用的工具类,网上有很多写法。
在这里插入图片描述

手写验证码

首先说明一下,这里的手写,并不是博主自己手写的,而是在GitHub中看到过一个项目,项目中有涉及到一个验证码的源码,感觉还不错。

新建验证码工具类

验证码工具类

public class Code {public static final String RANDOMCODEKEY = "ValidateCode";//将图片存放到Session中的keyprivate Random random = new Random();//生成随机数private String randomString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//图片中随机产生的字母或数字private int width = 80;//图片宽private int height = 26;//图片高private int lineSize = 40;//干扰线数量private int stringNum = 4;//随机产生字符数量//获得字体private Font getFont(){return new Font("Fixedsys",Font.CENTER_BASELINE,18);}//获得随机颜色值private Color getRandColor(int fc,int bc){if(fc > 255) {fc = 255;}if(bc > 255) {bc = 255;}int r = fc + random.nextInt(bc-fc-16);int g = fc + random.nextInt(bc-fc-14);int b = fc + random.nextInt(bc-fc-18);return new Color(r,g,b);}/** 返回随机的字符*/private String getRandomString(int num){return String.valueOf(randomString.charAt(num));}/** 绘制字符串*/private String drawString(Graphics g, String randomString, int i){g.setFont(getFont());g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));String rand = String.valueOf(getRandomString(random.nextInt(this.randomString.length())));randomString += rand;g.translate(random.nextInt(3), random.nextInt(3));g.drawString(rand, 13 * i, 16);return randomString;}/** 绘制干扰线*/private void drawLine(Graphics g){int x = random.nextInt(width);int y = random.nextInt(height);int xl = random.nextInt(13);int yl = random.nextInt(15);g.drawLine(x, y, x + xl, y + yl);}//核心方法:生成随机验证码,并返回public void getValidateCode(HttpServletRequest request, HttpServletResponse response) {HttpSession session = request.getSession();BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);Graphics g = image.getGraphics();//产生Image对象的Graphics对象,改对象可以在图像上进行各种绘制操作g.fillRect(0, 0, width, height);g.setFont(new Font("Times New Roman",Font.ROMAN_BASELINE,18));g.setColor(getRandColor(110, 133));//绘制干扰线for(int i = 0;i <= lineSize; i++){drawLine(g);}//绘制随机字符String randomString = "";for(int i = 1; i <= stringNum; i++){randomString = drawString(g, randomString, i);}//将生成的随机字符串装进Session作用域session.removeAttribute(RANDOMCODEKEY);session.setAttribute(RANDOMCODEKEY, randomString);System.out.println(randomString);//输出生成的随机字符串g.dispose();//关闭窗体,释放资源try {ImageIO.write(image, "JPEG", response.getOutputStream());//将内存中的图片通过流动形式输出到客户端} catch (Exception e) {e.printStackTrace();}}
}

SpringBoot项目中新建一个util包,用于存放工具类,这样一个验证码工具类就写好了。

Controller中调用

工具类写好后,就可以在Controller中调用

    @GetMapping("/checkCode2")public void checkcode2(HttpServletRequest request, HttpServletResponse response){response.setContentType("image/jpeg");response.setDateHeader("Expires",0);response.setHeader("Pragma","no-cache");response.setHeader("Cache-Control","no-cache");//引用验证码工具类,生成验证码Code code=new Code();code.getValidateCode(request,response);}
  • @GetMapping("/checkCode2"): 这是一个Spring MVC注解,表示当客户端发送一个GET请求到/checkCode2路径时,将调用checkcode2方法。
  • public void checkcode2(HttpServletRequest request, HttpServletResponse response): 这是一个控制器方法,接收HttpServletRequest和HttpServletResponse对象作为参数,用于处理HTTP请求和响应。
  • response.setContentType("image/jpeg");: 设置响应的内容类型为JPEG格式的图片。
  • response.setDateHeader("Expires",0);: 设置响应头Expires为0,表示页面内容已过期,浏览器应当每次都从服务器获取最新内容。
  • response.setHeader("Pragma","no-cache");: 设置响应头Pragma为no-cache,指示浏览器不要缓存页面内容。
  • response.setHeader("Cache-Control","no-cache");: 设置响应头Cache-Control为no-cache,进一步指示浏览器不要缓存页面内容。
  • Code code=new Code();: 创建一个Code类的实例。
  • code.getValidateCode(request,response);: 调用Code实例的getValidateCode方法,生成验证码并将其写入响应中。

Apifox中验证

在这里插入图片描述


Hutool图形验证码

Hutool官网:https://www.hutool.cn/docs/#/
正如官网简介所言,Hutool是一个小而全的Java工具类库,它提供了很多常用的工具类,几乎包罗万象。
在这里插入图片描述
今天我们使用的是hutool-captcha(图形验证码)。

引入依赖

这里使用的是Maven,如果是其他的项目构建工具,请参考文档。
单独引入图形验证码的依赖模块

    <!-- 添加图形验证码依赖 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId><version>5.8.6</version></dependency>

当然,为了方便,也可以按照文档中的方法,引入所有模块。

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version>
</dependency>

在这里插入图片描述

LineCaptcha:线段干扰的验证码

    @GetMapping("/checkCode1")public void checkCode(HttpServletResponse response) throws IOException {//调用Hutool的图形验证码LineCaptcha captcha = CaptchaUtil.createLineCaptcha(130, 38, 5, 5);//指示浏览器不要缓存页面内容response.setHeader("Pragma","no-cache");//进一步指示浏览器不要缓存页面内容response.setHeader("Cache-Control","no-cache");//表示页面内容已过期,浏览器应当每次都从服务器获取最新内容response.setDateHeader("Expires",0);//表示返回的内容为JPEG格式的图片response.setContentType("image/jpeg");//图片验证码写出captcha.write(response.getOutputStream());//关闭流response.getOutputStream().close();}
  • LineCaptcha captcha = CaptchaUtil.createLineCaptcha(130, 38, 5, 5);
    定义图形验证码的长、宽、验证码字符数、干扰线宽度
  • LineCaptcha captcha = CaptchaUtil.createLineCaptcha(130, 38)
    定义图形验证码的长、宽

上面这两种写法都是可以的
在这里插入图片描述

CircleCaptcha:圆形干扰验证码

 @GetMapping("/checkCode1")public void checkCode(HttpServletResponse response) throws IOException {//调用Hutool的图形验证码CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(130, 38, 5, 20);//指示浏览器不要缓存页面内容response.setHeader("Pragma","no-cache");//进一步指示浏览器不要缓存页面内容response.setHeader("Cache-Control","no-cache");//表示页面内容已过期,浏览器应当每次都从服务器获取最新内容response.setDateHeader("Expires",0);//表示返回的内容为JPEG格式的图片response.setContentType("image/jpeg");//图片验证码写出captcha.write(response.getOutputStream());//关闭流response.getOutputStream().close();}
  • CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(130, 38, 5, 20);
    定义图形验证码的长、宽、验证码字符数、干扰⭕个数
  • CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(130, 38);
    定义图形验证码的长、宽

圆形干扰验证码同样两种写法。
在这里插入图片描述

ShearCaptcha:扭曲干扰验证码

    @GetMapping("/checkCode1")public void checkCode(HttpServletResponse response) throws IOException {//调用Hutool的图形验证码ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(130, 38,5,5);//指示浏览器不要缓存页面内容response.setHeader("Pragma","no-cache");//进一步指示浏览器不要缓存页面内容response.setHeader("Cache-Control","no-cache");//表示页面内容已过期,浏览器应当每次都从服务器获取最新内容response.setDateHeader("Expires",0);//表示返回的内容为JPEG格式的图片response.setContentType("image/jpeg");//图片验证码写出captcha.write(response.getOutputStream());//关闭流response.getOutputStream().close();}
  • ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(130, 38,5,5);
    定义图形验证码的长、宽、验证码字符数、干扰线宽度
  • ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(130, 38);
    定义图形验证码的长、宽

在这里插入图片描述

GifCaptcha:GIF验证码

 @GetMapping("/checkCode1")public void checkCode(HttpServletResponse response) throws IOException {//调用Hutool的图形验证码GifCaptcha captcha = CaptchaUtil.createGifCaptcha(130, 38,5);//指示浏览器不要缓存页面内容response.setHeader("Pragma","no-cache");//进一步指示浏览器不要缓存页面内容response.setHeader("Cache-Control","no-cache");//表示页面内容已过期,浏览器应当每次都从服务器获取最新内容response.setDateHeader("Expires",0);//表示返回的内容为JPEG格式的图片response.setContentType("image/jpeg");//图片验证码写出captcha.write(response.getOutputStream());//关闭流response.getOutputStream().close();}
  • GifCaptcha captcha = CaptchaUtil.createGifCaptcha(130, 38,5);
    定义GIF验证码的长、宽、验证码字符数
  • GifCaptcha captcha = CaptchaUtil.createGifCaptcha(130, 38);
    定义GIF验证码的长、宽

大家可以去试试,这里截不出那种Gif的效果
在这里插入图片描述

在这里插入图片描述

自定义验证码

在这里插入图片描述

纯数字验证码

    @GetMapping("/checkCode1")public void checkCode(HttpServletResponse response) throws IOException {// 自定义纯数字的验证码(随机4位数字,可重复)RandomGenerator randomGenerator = new RandomGenerator("0123456789", 4);LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100);captcha.setGenerator(randomGenerator);
// 重新生成codecaptcha.createCode();//指示浏览器不要缓存页面内容response.setHeader("Pragma","no-cache");//进一步指示浏览器不要缓存页面内容response.setHeader("Cache-Control","no-cache");//表示页面内容已过期,浏览器应当每次都从服务器获取最新内容response.setDateHeader("Expires",0);//表示返回的内容为JPEG格式的图片response.setContentType("image/jpeg");//图片验证码写出captcha.write(response.getOutputStream());//关闭流response.getOutputStream().close();}

在这里插入图片描述
当然除了LineCaptcha,CircleCaptcha,GifCaptcha,ShearCaptcha都是可以的

纯字母验证码

    @GetMapping("/checkCode1")public void checkCode(HttpServletResponse response) throws IOException {// 自定义纯数字的验证码(随机4位数字,可重复)RandomGenerator randomGenerator = new RandomGenerator("abcdefghijklmnopqrstuvwyzx", 4);CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100);captcha.setGenerator(randomGenerator);
// 重新生成codecaptcha.createCode();//指示浏览器不要缓存页面内容response.setHeader("Pragma","no-cache");//进一步指示浏览器不要缓存页面内容response.setHeader("Cache-Control","no-cache");//表示页面内容已过期,浏览器应当每次都从服务器获取最新内容response.setDateHeader("Expires",0);//表示返回的内容为JPEG格式的图片response.setContentType("image/jpeg");//图片验证码写出captcha.write(response.getOutputStream());//关闭流response.getOutputStream().close();}

在这里插入图片描述

四则运算验证码

 @GetMapping("/checkCode1")public void checkCode(HttpServletResponse response) throws IOException {ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 45, 4, 4);// 自定义验证码内容为四则运算方式captcha.setGenerator(new MathGenerator());// 重新生成codecaptcha.createCode();//指示浏览器不要缓存页面内容response.setHeader("Pragma","no-cache");//进一步指示浏览器不要缓存页面内容response.setHeader("Cache-Control","no-cache");//表示页面内容已过期,浏览器应当每次都从服务器获取最新内容response.setDateHeader("Expires",0);//表示返回的内容为JPEG格式的图片response.setContentType("image/jpeg");//图片验证码写出captcha.write(response.getOutputStream());//关闭流response.getOutputStream().close();}

在这里插入图片描述


文章转载自:

http://jqQ9Um5O.xkmrr.cn
http://q3DH4iUU.xkmrr.cn
http://cT9lRIWh.xkmrr.cn
http://UvbmEQnB.xkmrr.cn
http://ilpMQ8oi.xkmrr.cn
http://foJRun1L.xkmrr.cn
http://8R2KUMwV.xkmrr.cn
http://Xv4PR4M4.xkmrr.cn
http://1GvCAXRS.xkmrr.cn
http://Pw89CXAD.xkmrr.cn
http://GervHqc9.xkmrr.cn
http://KuC7Txhe.xkmrr.cn
http://LVuEkhpj.xkmrr.cn
http://m8q5bofT.xkmrr.cn
http://99RZlQ1m.xkmrr.cn
http://ZPa8uq6h.xkmrr.cn
http://6caAP3GV.xkmrr.cn
http://sI9d8EST.xkmrr.cn
http://mtXzpeSf.xkmrr.cn
http://ZSosSX62.xkmrr.cn
http://SEVRxLJO.xkmrr.cn
http://M5v0zCeO.xkmrr.cn
http://3MXtmQ0N.xkmrr.cn
http://m2SYJVxQ.xkmrr.cn
http://RH9AOvc6.xkmrr.cn
http://0I6oexEh.xkmrr.cn
http://rzh4EnT0.xkmrr.cn
http://4wcWoDjd.xkmrr.cn
http://zLsVIRnM.xkmrr.cn
http://CPk8FW2o.xkmrr.cn
http://www.dtcms.com/wzjs/751555.html

相关文章:

  • 禅城区建设局网站seo的网站
  • 女人做绿叶网站相亲拉人宁波网站制作设计
  • 做网站自己买服务器wordpress yosat
  • 个人网站制作的选题意义公司部门部长是什么级别
  • 触动网站建设固原网站制作
  • 黔东南企业网站建设对网站建设的描述
  • 东莞建站模板悟空crm永久免费了
  • HS酒店网站建设那种网站建设软件最好
  • 网站建设与开发选题做网站用的大图
  • 旅游网站系统设计与开发建站超市代理
  • vs可以做网站吗企查查企业信息查询手机版下载
  • 网站开发 开票网站建设ppt方案模板下载
  • 做电子杂志用什么网站设计云官网
  • 智谋网站优化公司毕业设计做系统网站好
  • 优秀网站设计 pdf网站规划与开发设计
  • 网站发布服务托管器官方网站建设手机银行
  • 甘肃高端建设网站做医院网站公司吗
  • 网站建设软件哪个好免费的网站加速器
  • 快速做网站前端的视频教程网站云主机吗
  • 上海制作网站学ui设计学费需要多少钱
  • wordpress开启全站ssl棋牌网站建设多少钱
  • 网站建设陕西网页设计制作教程:一个页面的完全制作
  • 万网网站购买网站程序设计软件
  • 厦门建设银行网站首页网站 关键词 出现频率
  • 深圳电子商城网站建设化妆品网页设计模板图片
  • 网站推广的主要途径怎么做家政的网站
  • 网站为什么需要备案号微信开放社区
  • 遵义公司网站制作哪家好优秀网站设计平台
  • 怎样申请做c c 网站h5高端网站建设
  • 网站建设怎么开票泰安网站建设费用