一. 图片验证码概述:

很多网站都有该实现

作用:

为了提高系统的安全性

有了验证码,我们就可以要求用户在输入用户名,密码等信息后,同时输入图片上的文字,用户提交后,系统会首先从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如何缓存验证码图片_图片验证码概述及实现步骤相关推荐

  1. java手机验证码代码_手机验证码(Java代码)

    首先就是导入相关的jar包,这里用maven依赖: com.alibaba fastjson 1.2.54 创建发送验证码的类: package com.snm.util; import java.i ...

  2. .net pdf转图片_图片转PDF怎么转?推荐两种图片转PDF方法

    在我们的工作和学习中,我们有时候需要将图片转换为PDF格式的文件.因为PDF格式的文件查看起来很不容易,所以它可以确保图片文件中的信息不被泄露.那么图片转PDF怎么转呢?大家可以参考下面这两种方法,一 ...

  3. java如何叠加图片_图片叠加效果Java代码实现

    本文实例为大家分享了Java实现图片叠加效果展示的具体代码,供大家参考,具体内容如下 import java.awt.AlphaComposite; import java.awt.Graphics2 ...

  4. java前端接收回显图片_图片上传并回显后端篇

    图片上传并回显后端篇 我们先看一下效果 继上一篇的图片上传和回显,我们来实战一下图片上传的整个过程,今天我们将打通前后端,我们来真实的了解一下,我们上传的文件,是以什么样的形式上传到服务器,难道也是一 ...

  5. 微信缓存dat怎么转图片_图片怎么转PDF?这个方法完美解决!

    图片怎么转PDF?职场小伙伴们特别是办公室文员,经常会碰到文档转换的问题,甚至一些补助项目在申报时对附件的大小有严格的要求,今天倾尘就给大家分享下高效办公需要的软件,实打实的干货分享哈- 方法一:利用 ...

  6. java 空白图片_图片文件打印空白的解决办法

    最近一段时间遇到了一个客户问题,客户反映用图片文件时,报表打印预览没有问题,但是打印出来后有些图片能够正常显示,有些图片确实空白的,无法正常打印,经过确认最后发现是客户的图片像素过高导致的打印出来无法 ...

  7. java phash算法 图片_图片相似度——hash算法简介

    一.均值hash 均值hash方法是对每幅图片生成一个"指纹"字符串,然后通过比较不同图片的指纹来确定图片的相似性,比较结果越接近,则说明图片越相似. 计算均值hash的步骤. 1 ...

  8. vue通过链接显示服务器上的图片_图片网站该如何做SEO优化?详细讲解图片优化技巧...

    通常,在网站搜索引擎优化的过程中,很多站长和SEOer经常忽略图片的优化,但事实上,每个网站都有很多图片,所以优化网站图片就像优化其他内容一样,成为搜索引擎优化的一个重要工作内容. 如果你能成功地优化 ...

  9. img加载本地图片_图片加载技术-懒加载和预加载

    懒加载也就是延迟加载. 具体表现为: 当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张占位图的路径,这样就只需请求一次,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路 ...

最新文章

  1. Fundebug录屏插件更新至0.4.0,修复BUG,优化性能
  2. python strftime格式化显示_Python 格式化输出时间字符串函数 strftime
  3. python多个分隔符分割字符串_Python中带有多个分隔符的拆分字符串
  4. APP的CPU,内存,耗电,流量测试工具
  5. 用Unity3D实现简单的牧师与魔鬼游戏
  6. css基础知识汇总4
  7. java 代码生成器 generator
  8. Oracle下载账户
  9. Java基础面试题50题
  10. 二叉树模型matlab实现,利用Matlab实现二叉树的树形显示
  11. vue.js中修饰符.stop的用法。
  12. ROS从入门到精通3-5:blender机器人模型定制皮肤贴图
  13. .Net Core 简单的Hangfire部署Demo
  14. 华为eNSP配置FR 帧中继协议
  15. 三维视频融合 开放源代码 混合模式 内嵌web容器 c++ js 混合开发 时空克隆引擎 数字孪生 点卯 系列 魔镜系列
  16. 如何同时训练左手灵活性和音阶思维
  17. emacs常用操作笔记
  18. 【Javascript】函数中的arguments
  19. 微信公众号开启开发者模式
  20. STM32-OLED屏幕显示教程

热门文章

  1. 《萧十一郎》之灵鹫篇——夕阳西下,断肠人在天涯
  2. 机器学习赛事(四):快来一起挖掘幸福感
  3. [转]清水吉治的设计效果图
  4. ZYNQ导入hdf文件报错
  5. 05-HTML标签图文详解(二)
  6. Android获取文件夹路径
  7. MediaPlayer的生命周期和缓冲策略 (源码篇)
  8. ffmpeg 打包TS介绍
  9. HJ80 整型数组合并(unique)
  10. 安装驱动提示文件的哈希值不在指定的目录文件中;需强制禁止驱动签名;在高级启动中强制禁止驱动签名;