java如何缓存验证码图片_图片验证码概述及实现步骤
一. 图片验证码概述:
很多网站都有该实现
作用:
为了提高系统的安全性
有了验证码,我们就可以要求用户在输入用户名,密码等信息后,同时输入图片上的文字,用户提交后,系统会首先从session中提取刚刚生成的验证码,并和用户输入的验证码进行比较,如果比较相等,表示用户是从登录界面登录过来的,否则,表示用户是非法的,我们使用验证码,是确保系统的使用必须要进行登录成功之后,才能使用,避免用户直接在地址栏中输入要访问的页面。
也就是说,使用验证码,就强制用户用户必须先从登录界面登录
二. 验证实现方式
用到两个关键类,这两个类跟图片的输出是有关系的
BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
//第一个参数im表示一个图片对象
//JPG表示图片输出类型
//response.getOutputStream()代表一个响应的输出流,也就是说,你访问这个servlet.该servlet就会图片显示给你
ImageIO.write(im, "JPG",response.getOutputStream());
三. 实现步骤
1.使用BufferedImage产生一个图片,然后使用ImageIO输出,并指定为JPG格式
BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
//第一个参数im表示一个图片对象
//JPG表示图片输出类型
//response.getOutputStream()代表一个响应的输出流,也就是说,你访问这个servlet.该servlet就会图片显示给你
ImageIO.write(im, "JPG",response.getOutputStream());
2.获取图片绘图对象
Graphics g = im.getGraphics();
3.填充绘图区域
Random rm = new Random();
Color c = new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255));
g.setColor(c);
//填充整个图片的颜色
g.fillRect(0, 0, 60, 20);
4.向图片中输出数字
g.setColor(new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255)));
g.setFont(new Font("华文隶书",Font.BOLD|Font.ITALIC,28));
g.drawString("8", 1, 18);
5.随机4位数字
//随机产生4位数字
for(int i=0;i<4;i++){
g.setColor(new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255)));
g.setFont(new Font("Gungsuh",Font.BOLD|Font.ITALIC,22));
g.drawString(""+rm.nextInt(10), (i*15)+2, 18);
}
6.随机产生中文
String str = "胸有激雷而面如平湖者可拜上将军";
for(int i=0;i<4;i++){
g.setColor(new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255)));
g.setFont(new Font("Gungsuh",Font.BOLD|Font.ITALIC,15));
g.drawString(""+str.charAt(rm.nextInt(str.length())), (i*15)+2, 18);
}
7.在页面中如何来引入该验证码:
8.保存数字,以便进行登录比较
//将得到的四个数字保存到session中,以便当用户登录的时候,用来比较
request.getSession().setAttribute("piccode", sbf.toString());
9.登录验证
首先,需要验证该用户在数据库中是否存在,如果存在,还需要验证输入的验证码是否一致.
验证成功后,需要转发到相关的操作页面.
代码实例:
boolean b_exist = login.validate(username,passwd);
//如果该用户存在
if(b_exist){
String pic = ""+request.getSession().getAttribute("piccode");
//比较验证码
if(!pic.equals("") && pic.equals(code)){
//向session中存入用户信息,以供其他中来使用
request.getSession().setAttribute("username", username);
response.sendRedirect("index.jsp");
}
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
java如何缓存验证码图片_图片验证码概述及实现步骤相关推荐
- java手机验证码代码_手机验证码(Java代码)
首先就是导入相关的jar包,这里用maven依赖: com.alibaba fastjson 1.2.54 创建发送验证码的类: package com.snm.util; import java.i ...
- .net pdf转图片_图片转PDF怎么转?推荐两种图片转PDF方法
在我们的工作和学习中,我们有时候需要将图片转换为PDF格式的文件.因为PDF格式的文件查看起来很不容易,所以它可以确保图片文件中的信息不被泄露.那么图片转PDF怎么转呢?大家可以参考下面这两种方法,一 ...
- java如何叠加图片_图片叠加效果Java代码实现
本文实例为大家分享了Java实现图片叠加效果展示的具体代码,供大家参考,具体内容如下 import java.awt.AlphaComposite; import java.awt.Graphics2 ...
- java前端接收回显图片_图片上传并回显后端篇
图片上传并回显后端篇 我们先看一下效果 继上一篇的图片上传和回显,我们来实战一下图片上传的整个过程,今天我们将打通前后端,我们来真实的了解一下,我们上传的文件,是以什么样的形式上传到服务器,难道也是一 ...
- 微信缓存dat怎么转图片_图片怎么转PDF?这个方法完美解决!
图片怎么转PDF?职场小伙伴们特别是办公室文员,经常会碰到文档转换的问题,甚至一些补助项目在申报时对附件的大小有严格的要求,今天倾尘就给大家分享下高效办公需要的软件,实打实的干货分享哈- 方法一:利用 ...
- java 空白图片_图片文件打印空白的解决办法
最近一段时间遇到了一个客户问题,客户反映用图片文件时,报表打印预览没有问题,但是打印出来后有些图片能够正常显示,有些图片确实空白的,无法正常打印,经过确认最后发现是客户的图片像素过高导致的打印出来无法 ...
- java phash算法 图片_图片相似度——hash算法简介
一.均值hash 均值hash方法是对每幅图片生成一个"指纹"字符串,然后通过比较不同图片的指纹来确定图片的相似性,比较结果越接近,则说明图片越相似. 计算均值hash的步骤. 1 ...
- vue通过链接显示服务器上的图片_图片网站该如何做SEO优化?详细讲解图片优化技巧...
通常,在网站搜索引擎优化的过程中,很多站长和SEOer经常忽略图片的优化,但事实上,每个网站都有很多图片,所以优化网站图片就像优化其他内容一样,成为搜索引擎优化的一个重要工作内容. 如果你能成功地优化 ...
- img加载本地图片_图片加载技术-懒加载和预加载
懒加载也就是延迟加载. 具体表现为: 当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张占位图的路径,这样就只需请求一次,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路 ...
最新文章
- Fundebug录屏插件更新至0.4.0,修复BUG,优化性能
- python strftime格式化显示_Python 格式化输出时间字符串函数 strftime
- python多个分隔符分割字符串_Python中带有多个分隔符的拆分字符串
- APP的CPU,内存,耗电,流量测试工具
- 用Unity3D实现简单的牧师与魔鬼游戏
- css基础知识汇总4
- java 代码生成器 generator
- Oracle下载账户
- Java基础面试题50题
- 二叉树模型matlab实现,利用Matlab实现二叉树的树形显示
- vue.js中修饰符.stop的用法。
- ROS从入门到精通3-5:blender机器人模型定制皮肤贴图
- .Net Core 简单的Hangfire部署Demo
- 华为eNSP配置FR 帧中继协议
- 三维视频融合 开放源代码 混合模式 内嵌web容器 c++ js 混合开发 时空克隆引擎 数字孪生 点卯 系列 魔镜系列
- 如何同时训练左手灵活性和音阶思维
- emacs常用操作笔记
- 【Javascript】函数中的arguments
- 微信公众号开启开发者模式
- STM32-OLED屏幕显示教程