java实现登录验证码

本文实例为大家分享了java实现登录验证码的具体代码,供大家参考,具体内容如下

1、ValidateCode.java

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.imageio.ImageIO;
import javax.servlet.ServletException;

import org.springframework.stereotype.Service;

/**
 * 登录验证码
 *
 */
public class ValidateCode {

 /**
  * 得到验证码图片
  * @param out
  * @param number 验证数字
  * @throws ServletException
  * @throws IOException
  */
 public void getImage(OutputStream out,String number)
   throws ServletException, IOException {
  //0.创建空白图片
  BufferedImage image=new BufferedImage(100,30,BufferedImage.TYPE_INT_RGB);
  //1.获取图片画笔
  Graphics g = image.getGraphics();
  Random r=new Random();
  //2.设置画笔颜色(Random类中的nextInt(n)返回一个大于等于0,小于n的随机数)
  g.setColor(new Color(r.nextInt(255),r.nextInt(255), r.nextInt(255)));
  //3.绘制矩形的背景
  g.fillRect(0, 0, 100, 30);
  //4.调用自定义的方法,获取长度为4的字母数字组合的字符串
  g.setColor(new Color(0,0,0));
  g.setFont(new Font(null,Font.BOLD,24));
  //5.设置颜色字体后,绘制字符串(x/y,最左边字符所处的位置)
  g.drawString(number, 20, 24);
  //6.绘制8条干扰线(alpha表示透明度)
  for(int i=0;i<8;i++){
   g.setColor(new Color(r.nextInt(255),r.nextInt(255), r.nextInt(255),r.nextInt(255)));
   g.drawLine(r.nextInt(100), r.nextInt(30), r.nextInt(100), r.nextInt(30));
  }
  ImageIO.write(image, "jpeg", out);
 }

 //自定义方法,获取长度为size的字母数字组合的字符串
 public String getNumber(int size){
  String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  String number="";
  Random r = new Random();
  for(int i=0;i<size;i++){
   number+=str.charAt(r.nextInt(str.length()));
  }
  return number;
 }

}

2、Controller

@RequestMapping(value = "/check",method={RequestMethod.GET})
 @ResponseBody
 public void check(HttpServletRequest req) {
  try {
   HttpServletResponse response = this.getResponse();
   response.setContentType("application/octet-stream");
   response.addHeader("Content-Disposition", "attachment;filename=" + "vcode.jpeg");
   String number = validateCode.getNumber(4);
   validateCode.getImage(response.getOutputStream(),number);
  } catch (Exception e) {

  }
 }

3、html

<img style="width:4.4rem;height:1.9rem; margin-left:0.8rem;" src="http://127.0.0.1:8080/test/check">

效果图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java后端产生验证码后台验证功能的实现代码

    直接跳severlet在java后台生成验证码: @RequestMapping(value="yzm.action") public void Yzm(HttpSession session,HttpServletResponse resp){ // 验证码图片的宽度. int width = 60; // 验证码图片的高度. int height = 20; // 验证码字符个数 int codeCount = 4; int x = 0; // 字体高度 int fontHeigh

  • Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口(遵循短信平台的接口规范即可).具体看代码: 使用HttpClient的时候需要在项目中引入: commons-httpclient-3.1.jar 这个jar包, 项目结构: 1.创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法 /** * 文件说明 * @Descriptio

  • java实现短信验证码5分钟有效时间

    本文实例为大家分享了java实现短信验证码5分钟有效时间,供大家参考,具体内容如下 实现一个发送短信验证码的请求,要求5分钟之内重复请求,返回同一个验证码. 网上可找到几种方案: 如,存储数据库或缓存中.实现起来比较麻烦,舍弃: 另一种方式即本例,使用session存储.其他方式,暂未进一步了解. 实现步骤: (springmvc) 1.controller中,获取session对象,取code,取不到新生成,并存储session中: 2.单手机号发送量,判断并 +1 记入数据库: 3.Time

  • Java selenium处理极验滑动验证码示例

    要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题,我按照这思路去大概实现了一下. 1.使用htmlunit(这种方式我没成功,模拟鼠标拖拽后轨迹没生成,可以跳过) 我用的是java,我首先先想到了用直接用htmlunit,我做了点初始化 private void initWebClient() { if (webClient != null) { return; } webClient = new WebClient(BrowserVersion.

  • Java发送邮箱验证码、session校验功能

    本篇主要描述"发送邮箱验证码.session校验"相关前(html\js)后(java)台代码,业务逻辑示例,闲话少诉,直接上代码. 1.引入的jar包是mail-1.4.jar 2.java底层发送邮箱方法 public boolean sendEMail(Map<String, Object> map) { log.info("電子郵件接口執行開始!"); String from = Cache.getInstance().getParamsCons

  • java实现登录验证码

    本文实例为大家分享了java实现登录验证码的具体代码,供大家参考,具体内容如下 1.ValidateCode.java 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;

  • java实现登录验证码功能

    本文实例为大家分享了java实现登录验证码功能的具体代码,供大家参考,具体内容如下 登录验证码 登录验证是大多数登录系统都会用到的一个功能,它的验证方式也是有很多种,例如登录验证码,登录验证条及拼图拖动块等,这里讲讲输入登录验证码的方式来实现的例子.首先,kaptcha这是一个开源的验证码实现库,利用这个库可以非常方便的实现验证码功能. 1.添加依赖 在pom文件下添加kaptcha依赖包 <!-- https://mvnrepository.com/artifact/com.github.ax

  • Java中SSM+Shiro系统登录验证码的实现方法

     先给大家展示下效果图: 1.验证码生成类: import java.util.Random; import java.awt.image.BufferedImage; import java.awt.Graphics; import java.awt.Font; import java.awt.Color; /** * 验证码生成器类,可生成数字.大写.小写字母及三者混合类型的验证码. 支持自定义验证码字符数量: 支持自定义验证码图片的大小: 支持自定义需排除的特殊字符: * 支持自定义干扰线

  • Java web含验证码及权限登录实例代码

    所用到的开发工具为myeclipse10,MySQL数据库. 首先,在myeclipse中新建一个Java web项目. 项目的结构: 数据库结构: 下面将各个包中的代码粘贴出来. com.ningmeng.dao包 package com.ningmeng.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLExcept

  • java短信验证码登录功能设计与实现

    目录 前言 业务案例 业务关键点剖析 短信验证码功能实现思路 有效期问题 操作步骤 前言 现在不管是各类的网站,还是大小社交app,登录方式是越来越多了,其中基于短信验证码的登录可以说是各类app必不可少的方式,短信验证码登录以其高效,安全,便捷等特性受到许多用户的青睐 业务案例 如下所示,是一个大家熟知的采用短信登录的入口 输入手机号之后,出现如下效果, 输入手机上面收到的验证码之后,就可以正常登录了 业务关键点剖析 以上是一个正常的使用短信验证码登录的业务流程,在实际开发中,需要考虑的因素更

  • Java 实现随机验证码功能简单实例

    Java 实现随机验证码功能简单实例 现在许多系统的注册.登录或者发布信息模块都添加的随机码功能,就是为了避免自动注册程序或者自动发布程序的使用. 验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交信息无效.为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰线或者将字符进行扭曲,增加自动识别的难度. 在这里,我们使用servlet来实现随机验证码的实现.  实现代码: p

  • 实例详解Spring Boot实战之Redis缓存登录验证码

    本章简单介绍redis的配置及使用方法,本文示例代码在前面代码的基础上进行修改添加,实现了使用redis进行缓存验证码,以及校验验证码的过程. 1.添加依赖库(添加redis库,以及第三方的验证码库) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency&

  • Java模拟登录正方教务抓取成绩、课表、空教室

    本文实例为大家分享了Java模拟登录正方教务抓取成绩.课表.空教室等信息,供大家参考,具体内容如下 1.Jwgl.java package com.ican.yueban.jwgl; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import org.apache.http.Ht

  • javaweb登录验证码的实现方法

    本文实例为大家分享了javaweb登录验证码的具体代码,供大家参考,具体内容如下 使用: Controller:生成验证码 @RequestMapping("/user/check.jpg") public void createCode(HttpServletRequest request, HttpServletResponse response) throws IOException { // 通知浏览器不要缓存 response.setHeader("Expires&

  • Java如何实现验证码验证功能

    Java如何实现验证码验证功能呢?日常生活中,验证码随处可见,他可以在一定程度上保护账号安全,那么他是怎么实现的呢? Java实现验证码验证功能其实非常简单:用到了一个Graphics类在画板上绘制字母,随机选取一定数量的字母随机生成,然后在画板上随机生成几条干扰线. 首先,写一个验证码生成帮助类,用来绘制随机字母: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.ima

随机推荐