成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘搞定驗證碼,你學會了嗎?

開發(fā) 前端
我們其實很經(jīng)??吹?,登錄一些網(wǎng)站其實是需要驗證碼的。使用驗證碼是現(xiàn)在很多網(wǎng)站通行的一種方式,因為計算機很難識別驗證碼,所以可以識別驗證碼的用戶就可以被認為是人類。

哈嘍,大家好,我是了不起。

我們其實很經(jīng)常看到,登錄一些網(wǎng)站其實是需要驗證碼的。使用驗證碼是現(xiàn)在很多網(wǎng)站通行的一種方式,因為計算機很難識別驗證碼,所以可以識別驗證碼的用戶就可以被認為是人類。

今天我們講一下在 Java 中驗證碼的使用。

驗證碼生成

本效果是利用easy-captcha工具包實現(xiàn),首先需要添加相關(guān)依賴到pom.xml中,代碼如下:

<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>

驗證碼格式

easy-captcha驗證碼工具支持GIF、中文、算術(shù)等類型,分別通過下面幾個實例對象實現(xiàn):

  • SpecCaptcha(PNG類型的靜態(tài)圖片驗證碼)
  • GifCaptcha(Gif類型的圖片驗證碼)
  • ChineseCaptcha(GIF類型中文圖片驗證碼)
  • ArithmeticCaptcha(算術(shù)類型的圖片驗證碼)

字符類型分為以下幾種:

  • TYPE_DEFAULT:數(shù)字和字母混合
  • TYPEONLYNUMBER:純數(shù)字
  • TYPEONLYCHAR:純字母
  • TYPEONLYUPPER:純大寫字母
  • TYPEONLYLOWER:純小寫字母
  • TYPENUMAND_UPPER:數(shù)字和大寫字母混合

后端邏輯的實現(xiàn)

package com.yanx.controller;

import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Controller
public class KapchaController {
@GetMapping("/kaptcha")
public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
httpServletResponse.setHeader("Cache-Control","no-store");
httpServletResponse.setHeader("Pragma","no-cache");
httpServletResponse.setDateHeader("Expires",0);
httpServletResponse.setContentType("image/gif");

//三個參數(shù)分別為寬、高、位數(shù)
SpecCaptcha captcha=new SpecCaptcha(75,30,4);

//設(shè)置類型為數(shù)字和字母混合
captcha.setCharType(Captcha.TYPE_DEFAULT);

//設(shè)置字體
captcha.setCharType(Captcha.FONT_9);

//驗證碼存入session
httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());

//輸出圖片流
captcha.out(httpServletResponse.getOutputStream());
}

}

這里控制器新增了defaultKaptcha()方法,該方法所攔截處理的路徑為/kaptcha

前端邏輯的實現(xiàn)

在static目錄中新建kaptcha.html頁面,代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>驗證碼</title>
</head>
<body>
<img src="/kaptcha" onclick="this.src='/kaptcha?t=new Date()'">
</body>
</html>

訪問后端驗證碼路徑/kaptcha,驗證碼為圖片形式。onclick方法為點擊該標簽時可以動態(tài)切換顯示驗證碼。

啟動Spring Boot項目,打開瀏覽器輸入地址:

??http://localhost:8080/kaptcha.html??

效果如下:

圖片

驗證碼驗證

后端代碼

package com.yanx.controller;

import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@Controller
public class KapchaController {
@GetMapping("/kaptcha")
public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
httpServletResponse.setHeader("Cache-Control","no-store");
httpServletResponse.setHeader("Pragma","no-cache");
httpServletResponse.setDateHeader("Expires",0);
httpServletResponse.setContentType("image/gif");

//三個參數(shù)分別為寬、高、位數(shù)
SpecCaptcha captcha=new SpecCaptcha(75,30,4);

//設(shè)置類型為數(shù)字和字母混合
captcha.setCharType(Captcha.TYPE_DEFAULT);

//設(shè)置字體
captcha.setCharType(Captcha.FONT_9);

//驗證碼存入session
httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());

//輸出圖片流
captcha.out(httpServletResponse.getOutputStream());
}

@GetMapping("/verify")
@ResponseBody
public String verify(@RequestParam("code") String code, HttpSession session){
if(StringUtils.isEmpty(code)){
return "驗證碼不能為空";
}
String kapchaCode = session.getAttribute("verifyCode")+"";
if(StringUtils.isEmpty(kapchaCode)||!code.toLowerCase().equals(kapchaCode)){
return "驗證碼輸入錯誤";
}
return "驗證成功";
}
}

前端代碼

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>驗證碼驗證</title>
</head>
<body>

<img src="/kaptcha" onclick="this.src='/kaptcha?d=new Date()'">

<br>
<input type="text" maxlength="5" id="code" placeholder="請輸入驗證碼"/>
<button id="verify">驗證</button>
<br/>
<p id="verifyResult"></p>

</body>

<script src="https://s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" >
$(function(){
//驗證按鈕點擊事件
$('#verify').click(function(){
var code=$('#code').val();
$.ajax({
type:'GET',//方法類型
url:'/verify?code='+code,
success:function(result){
$('#verifyResult').html(result);
},
error:function(){
alert('請求失敗');
},
});
});
});
</script>
</html>

效果

圖片

圖片

圖片

結(jié)束語

生成驗證碼功能還是比較常用的,所以記錄整理一下,方便以后回顧,如果有幫到你們的地方倍感榮幸,有路過的大佬還望不吝雅教!

責任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2022-03-08 08:39:22

gRPC協(xié)議云原生

2023-12-30 13:41:39

JSON格式數(shù)據(jù)

2023-04-12 08:21:30

ChatGPTQQDiscord

2024-07-29 12:21:12

2023-09-11 13:08:26

2022-12-09 09:21:10

分庫分表算法

2021-12-01 06:50:50

Docker底層原理

2015-12-03 14:10:26

systemd容器Linux

2023-04-04 08:14:45

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發(fā)編程

2024-07-10 18:55:09

Python定時

2017-12-19 09:05:39

2022-10-11 08:48:08

HTTP狀態(tài)碼瀏覽器

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構(gòu)

2022-04-26 08:10:33

MySQL存儲InnoDB

2025-03-18 09:20:00

Go語言Golang
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91精品国产一区二区三区 | 国产成人网 | 日韩欧美专区 | 久久视频免费看 | 91国内外精品自在线播放 | 日韩av在线免费 | 国产精品成人在线 | 精品成人一区二区 | 国产成人一区在线 | 成人免费共享视频 | 日韩欧美理论片 | 玖玖视频免费 | 日韩欧美在线精品 | 一级黄色毛片免费 | 99国产精品99久久久久久粉嫩 | 国外成人免费视频 | 精品日韩一区二区 | 国产精品久久久久久久久图文区 | 国产精品日韩欧美一区二区三区 | 黄视频免费观看 | 成人亚洲精品久久久久软件 | 三级在线视频 | 国产精品一级 | 国产午夜在线 | 伊人精品在线视频 | 欧美精品一二三 | 日韩一二区 | 欧美日韩一区在线 | 伊人久久综合 | 亚洲天堂中文字幕 | 国产亚洲精品美女久久久久久久久久 | 国产一区二区三区在线免费 | av在线播放网址 | 99视频网| 成人免费视频网站在线看 | 国产精品免费一区二区三区四区 | 最新国产精品视频 | 日本韩国电影免费观看 | 激情国产在线 | 久久精品久久久久久 | 欧美精品第一页 |