java 生成校验验证码_java 验证码生成与校验
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 验证码生成与校验相关推荐
- java生成短信验证码_Java随机生成手机短信验证码的方法
本文实例讲述了Java随机生成手机短信验证码的方法.分享给大家供大家参考,具体如下: /** * 创建指定数量的随机字符串 * @param numberFlag 是否是数字 * @param len ...
- java 8位随机数_JAVA中生成指定位数随机数的方法总结
JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 1 public static String getRandom1(intlen) {2 int rs = ...
- java jsp校验提示信息_java Jquery表单校验代码jsp页面
jsp.file 欢迎注册EasyMall /* 注册表单的js校验 */ var formObj = { /* 检查输入项是否为空 */ "checkNull" : functi ...
- java生成动态验证码_java动态生成验证码
后台代码:RandomImageServlet.java package com.zhaoran.servlet; import java.awt.Color; import java.awt.Fon ...
- java 验证码_Java - 验证码 - 由Kaptcha组件实现
本文是基于SpringBoot整合Kaptcha验证码实现 Kaptcha 是一个可高度配置的实用验证码生成工具,在项目开发中能够非常方便实现验证码 先来看一个由 Kaptcha 制作的验证码效果图 ...
- java 生成token代码_java token生成和校验的实例代码
现在越来越多的登录方式都用到了token作为用户登录令牌,所以实现了一个token生成和校验案例. 缺点:该实现方式token是存储在内存中,不适合分布式项目,如需改为分布式项目部署,可把token存 ...
- java 调用word插件_java一键生成word操作,比poi简单
[Java] 纯文本查看 复制代码package com.jeeplus.modules.fact.util; import java.io.BufferedInputStream; import j ...
- java 头像 微信群_java怎么生成带用户微信头像的图片,并把这张图片发送给用户。...
展开全部 这个是要一个图片中嵌套另外一张图片 你可以62616964757a686964616fe59b9ee7ad9431333431336163试试下面这段代码import java.awt.Co ...
- java导出csv文件_java导出生成csv文件的方法
本文实例为大家分享了java导出生成csv文件的具体代码,供大家参考,具体内容如下 首先我们需要对csv文件有基础的认识,csv文件类似excel,可以使用excel打开,但是csv文件的本质是逗号分 ...
最新文章
- 如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)
- 游戏程序员的学习资料
- c++期末大作业_西城的家长注意了,北京小学校内期末考试越来越重要
- perf之sched
- python实现选择文件_python3实现文件选择对话框
- 重置Mysql自增列的开始序号
- 数据结构和算法——八种常用的排序算法----直接插入排序和希尔排序
- bootcamp空间不足_Bootcamp安装WindowsXP补丁时C盘空间不足的解决措施
- U盘文件夹类型变成应用程序
- PS去掉图片中的文字标识
- 阶段巨献 - centos+php-fpm+mariaDB+svn+nodejs+redis(开机启动及配置远程连接),配置linux的php和nodejs网站运行环境。
- Python绘制用于学术论文投稿的黑白图片
- python多张子图画在一张画布上,显示图例和标题,并保存。
- 技术领导力:作为技术团队领导经常为人所忽略的技能和职责
- matlab由离散点绘制光滑曲线并额外标注点
- 同步以太网-SyncE介绍
- 如何快速搭建自己的云桌面和云办公服务器软件系统
- php安全新闻早八点-Microdoor-第一季
- NFT 地板价计算方法
- 机器人正运动学DH参数表示法
热门文章
- 《标准普通话教程》中对平舌音的发音方法的说明
- Linux 关于查看 cpu 的命令
- java mapper sql_Slardar Sql Mapper Framework for Java( Java 持久层框架一枚~)
- cad图标注释大全_CAD源泉插件快捷键使用教程(全集)
- php 时间加法函数_php 时间加减
- 几点减几点怎么列算式_[股票一般几点可以买入]股票缩量怎么买 | 爱淘股吧
- inotify-java下载_inotify-java-2.1.jar
- linux关闭远程服务器,linux – 远程主机关闭SSH连接
- 清空list_还在为邮箱爆掉而烦恼吗?学会清空你的收件箱
- scrapyd部署_第八章 第一节 scrapyd和scrapy-client