生成图形验证码工具类: VerificationCodeUtil

package com.merce.woven.utils;import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;/*** @author chuan* @date 2019-05-05* @desc 图形验证码生成*/
public class VerificationCodeUtil {// 验证码字符集private static final char[] chars = {'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'};// 验证码位数private static final int CODE_SIZE = 4;// 图片上干扰线数量private static final int LINES = 5;// 图片宽度private static final int IMAGE_WIDTH = 80;// 图片高度private static final int IMAGE_HEIGHT = 40;// 图片字体大小private static final int FONT_SIZE = 30;/*** 生成随机验证码及图片* Object[0]:验证码字符串;* Object[1]:验证码图片。*/public static Object[] createImage() {StringBuffer sb = new StringBuffer();// 1.创建空白图片BufferedImage image = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, BufferedImage.TYPE_INT_RGB);// 2.获取图片画笔Graphics graphic = image.getGraphics();// 3.设置画笔颜色graphic.setColor(Color.LIGHT_GRAY);// 4.绘制矩形背景graphic.fillRect(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT);// 5.画随机字符Random ran = new Random();for (int i = 0; i < CODE_SIZE; i++) {// 取随机字符索引int n = ran.nextInt(chars.length);// 设置随机颜色graphic.setColor(getRandomColor());// 设置字体大小graphic.setFont(new Font(null, Font.BOLD + Font.ITALIC, FONT_SIZE));// 画字符graphic.drawString(chars[n] + "", i * IMAGE_WIDTH / CODE_SIZE, IMAGE_HEIGHT * 2 / 3);// 记录字符sb.append(chars[n]);}// 6.画干扰线for (int i = 0; i < LINES; i++) {// 设置随机颜色graphic.setColor(getRandomColor());// 随机画线graphic.drawLine(ran.nextInt(IMAGE_WIDTH), ran.nextInt(IMAGE_HEIGHT),ran.nextInt(IMAGE_WIDTH), ran.nextInt(IMAGE_HEIGHT));}// 7.返回验证码和图片return new Object[]{sb.toString(), image};}/*** 获取随机背景颜色(RGB)*/private static Color getRandomColor() {Random ran = new Random();Color color = new Color(ran.nextInt(256), ran.nextInt(256), ran.nextInt(256));return color;}}

通过接口返回给前端:

(1)Spring-Jersey的rest接口返回方式:

@GET
@Path("/getCode")
public void getCode() throws IOException {RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;HttpServletResponse response = servletRequestAttributes.getResponse();HttpSession session = servletRequestAttributes.getRequest().getSession();//利用图片工具生成图片,第一个参数是生成的验证码,第二个参数是生成的图片Object[] objs = VerificationCodeUtil.createImage();//将验证码存入Sessionsession.setAttribute("code",objs[0]);//禁止图像缓存response.setHeader("Pragma","no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);//将图片输出给浏览器BufferedImage image = (BufferedImage) objs[1];response.setContentType("image/png");OutputStream os = response.getOutputStream();ImageIO.write(image, "png", os);}

使用Java生成图形验证码(后端)相关推荐

  1. Java生成图形验证码,并传输至前端

    前段时间想要做一个登录的验证码功能,在网上查找了许多资料后实现了,在此记录并巩固一下,其实原理很简单,就是让Java来充当"画笔的角色"来绘制图片,并将图片通过二进制流的方式传输至 ...

  2. java生成图形验证码

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 首先,需要生成验证码字符串,方式很多,下面提供一种,根据指定源的方式来生成验证码 /*** 使用系统默认字符源 ...

  3. jsp 图形验证码 imageutils_java_jsp:java:生成图形验证码(纯数字)

    以下是jsp页面代码: Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random = new Random(); if(fc>25 ...

  4. java 生成图形验证码

    public void getCode(HttpServletRequest request, HttpServletResponse response) throws IOException {// ...

  5. java生成验证码工具类_Java生成图形验证码工具类

    生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...

  6. java 验证码 算术_java生成图形验证码(算数运算图形验证码 + 随机字符图形验证码)...

    平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...

  7. java实现图形验证码

    项目中可能会用到图形验证码的功能,源码分享给大家.以下是实际效果图: 一.后端JAVA代码 1.生成图形验证码工具类 public class imgVerifyCode {private int w ...

  8. html5 cs js字母验证码,JavaScript生成图形验证码

    本文实例为大家分享了js生成图形验证码的具体代码,供大家参考,具体内容如下 getGVerify:function (id) { function GVerify(options) { //创建一个图 ...

  9. PHP生成图形验证码

    PHP生成图形验证码 效果:随机生成6位验证码,100个干扰的黑点,一条干扰线 代码:image.php(生成验证码)和check.php(验证验证码是否输入正确) 效果图详见代码下面的截图 imag ...

最新文章

  1. springboot 集成jwt设置过期时间_传说中的jwt,我们来征服一下
  2. SPI时钟极性、时钟相位及片选
  3. Android:dagger2让你爱不释手-基础依赖注入框架篇
  4. 欧盟要统一充电接口为USB-C,苹果急了:这是在扼杀创新
  5. SAP CRM Fiori note header
  6. JavaFX中的塔防(6)
  7. 简单网络管理协议SNMP
  8. 可合并堆1:二项堆(Binominal Heap)
  9. 从60%的BI和数据仓库项目失败,看出从业者那些不堪的乱象
  10. c语言不用的行参警告,如何在C语言中禁止“未使用的参数”警告?
  11. Atitit s2018.2 s2 doc list on home ntpc.docx  \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字
  12. 如何学习财务数据分析,有哪些好工具?
  13. 生活小妙招:办公室如何查看自己电脑已连接的无线网密码,记得收藏
  14. Ability、capability 和 capacity
  15. 特惠|好物推荐iPhone充电线两条装6.9元
  16. 小米12pro天玑版和小米12pro哪个值得买 两者配置对比
  17. 数据结构(线性表树图)
  18. 软考系统架构师-计算机组成和体系结构
  19. 5.2.2 消费者和消费组元数据
  20. CentOS和CentOS Stream的区别你知道吗?

热门文章

  1. 对不起,我们公司不招35岁的人
  2. Feign - Error while extracting response for type [class java.lang.String]
  3. Verification failed while extracting uws@10.148.2: prebuild-install WARN install No prebuilt binarie
  4. java对齐_java字符串对齐方法
  5. cocos creator 优量汇广告接入
  6. 实现折叠的uitableviewcell效果
  7. 小米手机v3.exo 合并_eXo发布Web Content Management 2.0作为开源
  8. oppo怎么修改dns服务器地址,OPPO手机的WIFI设置里的DNS在哪
  9. 计算机怎么看显卡内存容量,显存容量是什么,详细教您查看显卡容量大小方法...
  10. PHP使用文字检索,关键词查询,分词查询