java绘图相关类

验证码工具类

package dt2008.util;

import javax.imageio.ImageIO;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.util.Random;

/**

* 验证码工具类

*/

public class RandomValidateCodeUtil {

//定义随机类

private Random random = new Random();

public void code(HttpServletRequest request, HttpServletResponse response){

//1.创建缓存图片类

//构造方法:new BufferedImage(int width,int height,int model)

BufferedImage image = new BufferedImage(150,50,BufferedImage.TYPE_INT_RGB);

//2.获取画笔

Graphics g = image.getGraphics();

//3.设置画笔颜色

g.setColor(Color.white);//白色

//4.填充矩形

//g.fillRect(x,y,width,height); x,y 起点的坐标,width矩形宽度,height矩形的高度

g.fillRect(0,0,150,50);

//5.画矩形边框

//设置画笔颜色(边框的颜色)

g.setColor(Color.blue);//蓝色

//画边框的语法:g.drawRect(x,y,width,height); x,y 起点的坐标,width边框宽度,height边框的高度

g.drawRect(1,1,147,47);

//6.画4条干扰线

//画直线语法:g.drawLine(x1,y1,x2,y2); x1,y1 线的起点坐标,x2,y2先的终点坐标

for (int i = 0; i < 4; i++) {

//设置画笔为随机颜色

g.setColor(getRandomColor());

//随机获取2个点

int x1 = random.nextInt(147)+1;

int y1 = random.nextInt(47)+1;

int x2 = random.nextInt(147)+1;

int y2 = random.nextInt(47)+1;

//画直线

g.drawLine(x1,y1,x2,y2);

}

//7.画验证码字符串

String checkCodeScope = "qwertyupasdfghjkzxcvbnm";

//定义接收拼接随机获取到的验证码字符变量

StringBuilder checkCodeBuilder = new StringBuilder();

//循环随机获取4个验证码字符

for (int i = 0; i < 4; i++) {

//获取随机位置

int index = random.nextInt(checkCodeScope.length());

//根据位置获取字符

char c = checkCodeScope.charAt(index);

//checkCodeBuilder拼接获取的随机字符

checkCodeBuilder.append(c);

//设置画笔的字体

//字符构造方法:new Font(字体,样式,大小)

g.setFont(new Font("微软雅黑",Font.BOLD,20));

//将每个字符画到图片上

//语法:g.drawString(字符串,x,y);

g.drawString(c+"",30+i*30,30);

}

request.getSession().setAttribute("SESSION_CHECKCODE", checkCodeBuilder.toString());

//8.将验证码图片输出给浏览器

//输出缓存图片的语法:ImageIO.write(缓存图片,图片的格式,输出给浏览器的字节流);

try {

ImageIO.write(image,"png",response.getOutputStream());

} catch (IOException e) {

e.printStackTrace();

}

}

//获取随机的颜色

private Color getRandomColor(){

int r = random.nextInt(256);

int g = random.nextInt(256);

int b = random.nextInt(256);

//构造方法语法:new Color(int r,int g,int b) //由红、绿、蓝组成, 每个颜色值范围0~255

return new Color(r,g,b);

}

}

Controller(生成验证码)

package yingshi.web;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import yingshi.util.RandomValidateCodeUtil;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import java.io.IOException;

/**

* 登录以及验证码

*/

@RestController

@RequestMapping("login/admin")

public class LoginController {

/**

* 生成验证码

*/

@RequestMapping("getVerify")

public void getVerify(HttpServletRequest request, HttpServletResponse response) {

RandomValidateCodeUtil randomValidateCodeUtil = new RandomValidateCodeUtil();

randomValidateCodeUtil.code(request, response);

}

}

这时,可以访问验证码了,可以在前端那写个js点击切换验证码

接下来就是校验验证码(注意:是分大小写的)

package yingshi.web;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import yingshi.util.RandomValidateCodeUtil;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import java.io.IOException;

/**

* 登录以及验证码

*/

@RestController

@RequestMapping("login/admin")

public class LoginController {

/**

* 校验后台登录

*/

@RequestMapping("checkVerify")

public String checkVerify(String username, String password, String verifyInput, HttpServletRequest request, HttpServletResponse response) {

//验证码校验

//获取session中的验证码

String sessionCheckCode = (String) request.getSession().getAttribute("SESSION_CHECKCODE");

//判断验证码是否正确

if(!verifyInput.equals(sessionCheckCode)){

return "错误";

}else{

return "正确";

}

}

}

希望这篇文章对您有帮助!

java 生成校验验证码_java 验证码生成与校验相关推荐

  1. java生成短信验证码_Java随机生成手机短信验证码的方法

    本文实例讲述了Java随机生成手机短信验证码的方法.分享给大家供大家参考,具体如下: /** * 创建指定数量的随机字符串 * @param numberFlag 是否是数字 * @param len ...

  2. java 8位随机数_JAVA中生成指定位数随机数的方法总结

    JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 1 public static String getRandom1(intlen) {2 int rs = ...

  3. java jsp校验提示信息_java Jquery表单校验代码jsp页面

    jsp.file 欢迎注册EasyMall /* 注册表单的js校验 */ var formObj = { /* 检查输入项是否为空 */ "checkNull" : functi ...

  4. java生成动态验证码_java动态生成验证码

    后台代码:RandomImageServlet.java package com.zhaoran.servlet; import java.awt.Color; import java.awt.Fon ...

  5. java 验证码_Java - 验证码 - 由Kaptcha组件实现

    本文是基于SpringBoot整合Kaptcha验证码实现 Kaptcha 是一个可高度配置的实用验证码生成工具,在项目开发中能够非常方便实现验证码 先来看一个由 Kaptcha 制作的验证码效果图 ...

  6. java 生成token代码_java token生成和校验的实例代码

    现在越来越多的登录方式都用到了token作为用户登录令牌,所以实现了一个token生成和校验案例. 缺点:该实现方式token是存储在内存中,不适合分布式项目,如需改为分布式项目部署,可把token存 ...

  7. java 调用word插件_java一键生成word操作,比poi简单

    [Java] 纯文本查看 复制代码package com.jeeplus.modules.fact.util; import java.io.BufferedInputStream; import j ...

  8. java 头像 微信群_java怎么生成带用户微信头像的图片,并把这张图片发送给用户。...

    展开全部 这个是要一个图片中嵌套另外一张图片 你可以62616964757a686964616fe59b9ee7ad9431333431336163试试下面这段代码import java.awt.Co ...

  9. java导出csv文件_java导出生成csv文件的方法

    本文实例为大家分享了java导出生成csv文件的具体代码,供大家参考,具体内容如下 首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分 ...

最新文章

  1. 如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)
  2. 游戏程序员的学习资料
  3. c++期末大作业_西城的家长注意了,北京小学校内期末考试越来越重要
  4. perf之sched
  5. python实现选择文件_python3实现文件选择对话框
  6. 重置Mysql自增列的开始序号
  7. 数据结构和算法——八种常用的排序算法----直接插入排序和希尔排序
  8. bootcamp空间不足_Bootcamp安装WindowsXP补丁时C盘空间不足的解决措施
  9. U盘文件夹类型变成应用程序
  10. PS去掉图片中的文字标识
  11. 阶段巨献 - centos+php-fpm+mariaDB+svn+nodejs+redis(开机启动及配置远程连接),配置linux的php和nodejs网站运行环境。
  12. Python绘制用于学术论文投稿的黑白图片
  13. python多张子图画在一张画布上,显示图例和标题,并保存。
  14. 技术领导力:作为技术团队领导经常为人所忽略的技能和职责
  15. matlab由离散点绘制光滑曲线并额外标注点
  16. 同步以太网-SyncE介绍
  17. 如何快速搭建自己的云桌面和云办公服务器软件系统
  18. php安全新闻早八点-Microdoor-第一季
  19. NFT 地板价计算方法
  20. 机器人正运动学DH参数表示法

热门文章

  1. 《标准普通话教程》中对平舌音的发音方法的说明
  2. Linux 关于查看 cpu 的命令
  3. java mapper sql_Slardar Sql Mapper Framework for Java( Java 持久层框架一枚~)
  4. cad图标注释大全_CAD源泉插件快捷键使用教程(全集)
  5. php 时间加法函数_php 时间加减
  6. 几点减几点怎么列算式_[股票一般几点可以买入]股票缩量怎么买 | 爱淘股吧
  7. inotify-java下载_inotify-java-2.1.jar
  8. linux关闭远程服务器,linux – 远程主机关闭SSH连接
  9. 清空list_还在为邮箱爆掉而烦恼吗?学会清空你的收件箱
  10. scrapyd部署_第八章 第一节 scrapyd和scrapy-client