图片验证码概述及实现步骤

一. 图片验证码概述:

很多网站都有该实现

作用:

为了提高系统的安全性

有了验证码,我们就可以要求用户在输入用户名,密码等信息后,同时输入图片上的文字,用户提交后,系统会首先从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.在页面中如何来引入该验证码:

<img alt="验证码" src="/ImageServlet">

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");
 }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • Java实现验证码具体代码(图片、汉字)

    本文为大家分享两个实例,相信大家一定会喜欢. 实例1:随机生成验证码图片并将之输出为一个png文件 效果图: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; import javax.

  • java图片验证码生成教程详解

    首先,我们先来看本地如何生成图片验证码的,再来写输出到网页的验证码如何实现. 先来看最简单的-实现的功能是,将一个字符串变成图片写入到文件中 实现代码: package cn.hncu.img; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOE

  • java 图片验证码的实现代码

    复制代码 代码如下: makeCertPic.java package pic; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imagei

  • java图片验证码实现示例分享

    复制代码 代码如下: package com.sanrong;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random; import javax.imageio.ImageIO;import

  • Java实现图片验证码具体代码

    本文实例为大家分享了Java图片验证码代码,供大家参考,具体内容如下 网页显示效果: index.jsp 使用两种方式强制图片更新: 1.设置图片输出时不缓存. 2.用js改变请求的地址. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>第一个web项目的主页</

  • java web中图片验证码功能的简单实现方法

    用户在注册网站信息的时候基本上都要数据验证码验证.那么图片验证码功能该如何实现呢? 大概步骤是: 1.在内存中创建缓存图片 2.设置背景色 3.画边框 4.写字母 5.绘制干扰信息 6.图片输出 废话不多说,直接上代码 package com.lsgjzhuwei.servlet.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Buffer

  • Javaweb开发中通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 package gacl.response.study; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; i

  • Java仿12306图片验证码

    由于要做一个新项目,所以打算做一个简单的图片验证码. 先说说思路吧:在服务端,从一个文件夹里面找出8张图片,再把8张图片合并成一张大图,在8个小图里面随机生成一个要用户验证的图片分类,如小狗.啤酒等.在前端,访问这个页面时,把图片加载上去,用户在图片上选择提示所需要的图片,当用户点登陆时,根据用户选择的所有坐标判断所选的图片是不是实际上的验证图片. 先放两张效果图: 为了让文件查找比较简单,在图片文件结构上可以这样: 这样方便生成用户要选择的Key图片,和取出8张小图合并成大图. 上代码:这是选

  • java生成图片验证码示例程序

    复制代码 代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">&l

  • java生成图片验证码实例代码

    关于java图片验证码的文章最近更新了不少,帮助大家掌握java验证码的生成技术,下文为大家分享了java生成图片验证码最简单的方法,供大家参考. 现在各行业在定制系统时都会考虑到机器注册,现在最有效的方式就是输入验证.现在的验证方式有很多种: 一.问题验证,其实也是图片验证,在图片上生成问题,然后输入框输入答案. 二.图片验证,输入图片上展示的文字信息. 三.短信验证,比较繁杂,用户也不怎么喜欢. 四.还有就是百度最新的验证方式.图片上生成文字,然后出现一个文字点击框,选择你在验证图片上看到的

随机推荐