精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

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

開發 前端
我們其實很經常看到,登錄一些網站其實是需要驗證碼的。使用驗證碼是現在很多網站通行的一種方式,因為計算機很難識別驗證碼,所以可以識別驗證碼的用戶就可以被認為是人類。

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

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

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

驗證碼生成

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

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

驗證碼格式

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

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

字符類型分為以下幾種:

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

后端邏輯的實現

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

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

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

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

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

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

}

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

前端邏輯的實現

在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方法為點擊該標簽時可以動態切換顯示驗證碼。

啟動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");

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

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

//設置字體
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>

效果

圖片

圖片

圖片

結束語

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

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2022-03-08 08:39:22

gRPC協議云原生

2023-12-30 13:41:39

JSON格式數據

2023-04-12 08:21:30

ChatGPTQQDiscord

2023-09-11 13:08:26

2024-07-29 12:21:12

2015-12-03 14:10:26

systemd容器Linux

2022-12-09 09:21:10

分庫分表算法

2021-12-01 06:50:50

Docker底層原理

2023-04-04 08:14:45

2022-10-11 08:48:08

HTTP狀態碼瀏覽器

2017-12-19 09:05:39

2024-07-10 18:55:09

Python定時

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發編程

2022-04-26 08:10:33

MySQL存儲InnoDB

2025-03-18 09:20:00

Go語言Golang
點贊
收藏

51CTO技術棧公眾號

亚洲欧美另类久久久精品2019| 欧美精品观看| 欧美亚洲综合一区| 在线观看免费91| www.av黄色| 香蕉久久夜色精品国产| 中文字幕亚洲综合久久| 日批视频免费看| 日本精品裸体写真集在线观看| 1024亚洲合集| 蜜桃臀一区二区三区| 中文字幕精品一区二| 国产精品扒开腿做爽爽爽软件| 亚洲欧美中文字幕| 国产一级二级av| videos性欧美另类高清| 亚洲人成网站色在线观看 | 97久久亚洲| 91国产视频在线观看| 伊人久久在线观看| 都市激情一区| 99久久99久久免费精品蜜臀| 91精品久久久久久久久不口人| 欧美日韩综合在线观看| 亚洲情侣在线| 亚洲精品小视频| 少妇极品熟妇人妻无码| 九色成人搞黄网站| 狠狠色狠狠色综合日日小说| 国风产精品一区二区| 国产日韩精品在线看| 成人丝袜高跟foot| 成人高清视频观看www| 五月天婷婷丁香| 国产精品v亚洲精品v日韩精品| 中文字幕综合一区| 亚洲欧洲久久久| 美女av一区| 欧美电影免费观看完整版| 校园春色 亚洲色图| 亚洲风情在线资源| 亚洲成人福利片| av日韩在线看| h网站久久久| 中文字幕一区二区三区av| 色一情一乱一伦一区二区三区 | 精品成人免费一区二区在线播放| 亚洲成人动漫av| 欧美精品卡一卡二| 性国产高清在线观看| 中文字幕一区二区不卡| 亚洲一一在线| 日韩精品成人av| 国产喷白浆一区二区三区| 蜜桃传媒视频第一区入口在线看| 隣の若妻さん波多野结衣| 国产精品18久久久久久久网站| 91精品久久久久久综合乱菊 | 久热re这里精品视频在线6| 97视频在线免费观看| 日韩精品视频免费看| 伊人精品在线| 性欧美视频videos6一9| 午夜影院在线看| 亚洲欧美日韩视频二区| 日本精品久久久久久久| 国产一级片av| 美女视频黄免费的久久 | 日日夜夜精品视频| 欧美成人乱码一区二区三区| 日韩高清一二三区| 国产精品18hdxxxⅹ在线| 亚洲精品白浆高清久久久久久| 日本japanese极品少妇| 蜜桃成人av| 色哟哟网站入口亚洲精品| 国产精品免费在线视频| 欧美淫片网站| 亚洲18私人小影院| 欧美亚洲另类小说| 久久99深爱久久99精品| 亚洲伊人第一页| 免费国产羞羞网站视频| 久久综合九色综合久久久精品综合| 久久涩涩网站| 中文字幕日本在线| 亚洲国产美女搞黄色| 久久无码高潮喷水| 日本午夜精品久久久久| 精品欧美久久久| 内射中出日韩无国产剧情| 成人羞羞网站入口免费| 欧美成人一区在线| 亚洲天堂av片| 九色综合狠狠综合久久| 国产一区免费在线观看| av在线免费一区| 一区二区免费视频| 蜜臀久久99精品久久久酒店新书 | www.成人av| 人操人视频在线观看| 中文字幕一区二区三区乱码在线| 成人黄色大片网站| jizz久久久久久| 欧美成人精品3d动漫h| 法国空姐电影在线观看| 午夜精品999| 国产精品第3页| 成人1区2区3区| 欧美国产日韩精品免费观看| 中文字幕人妻熟女人妻洋洋| www.久久.com| 亚洲国产日韩欧美在线图片| 欧美h片在线观看| 性欧美长视频| 国产精品永久入口久久久| 在线日本视频| 色综合一个色综合| 一级黄色片毛片| 国产精品久久占久久| 日本精品免费观看| 日本精品一二区| 亚洲色图20p| 中文字幕网av| 国产欧美日韩精品高清二区综合区| 欧美精品在线免费播放| 中文字幕在线一| 久久久久国产精品麻豆| 久久国产精品网| 视频成人永久免费视频| 这里只有精品久久| av图片在线观看| www.亚洲色图.com| 小泽玛利亚av在线| 美女国产精品久久久| 丝袜美腿精品国产二区| 无码人妻丰满熟妇区bbbbxxxx| 成人午夜电影网站| www插插插无码免费视频网站| 日韩精品一级毛片在线播放| 国产亚洲免费的视频看| 无码人妻精品一区二区三区不卡 | 久久精品综合一区| 丁香花在线观看完整版电影| 日韩你懂的电影在线观看| 国产精品视频看看| 六月婷婷色综合| 亚洲一卡二卡三卡四卡无卡网站在线看 | 日韩a级在线观看| 亚洲综合影院| 久久久久久久97| 老司机午夜福利视频| 亚洲va欧美va天堂v国产综合| 亚洲高清无码久久| 在线观看日韩av电影| 国产欧美韩日| 一区二区乱码| 亚洲午夜av久久乱码| 天码人妻一区二区三区在线看| 久久久蜜臀国产一区二区| 青青视频在线播放| 国产一区二区三区不卡视频网站| 日本欧美一级片| 成人精品福利| 在线电影欧美成精品| 99视频只有精品| 国产盗摄精品一区二区三区在线| 欧美这里只有精品| 林ゆな中文字幕一区二区| 91av在线不卡| 国产精品免费播放| 欧美丰满一区二区免费视频| 老妇女50岁三级| 成人av电影免费观看| 日本在线视频www| 成人精品视频| 91九色对白| 深夜成人在线| 最新日韩中文字幕| 成人av无码一区二区三区| 午夜在线成人av| 国产aⅴ激情无码久久久无码| 久久av中文字幕片| r级无码视频在线观看| 美女少妇全过程你懂的久久| 成人欧美一区二区三区在线湿哒哒| 在线观看中文字幕的网站| 日韩精品在线观| 亚洲影院一区二区三区| 亚洲国产日韩a在线播放| 我和岳m愉情xxxⅹ视频| 激情综合一区二区三区| 欧美,日韩,国产在线| 日韩欧美电影| 国产精品一区二区av| 久久久一本精品| 欧美成年人在线观看| 视频在线观看你懂的| 欧美喷潮久久久xxxxx| 日韩精品视频播放| 国产精品国产三级国产专播品爱网| 精品人妻无码中文字幕18禁| 久久激情网站| 日本a在线天堂| 成人3d精品动漫精品一二三| 国产亚洲欧美一区二区 | 一区二区三区国产在线| 亚洲高清不卡一区| 免费萌白酱国产一区二区三区| 国产美女久久精品香蕉69| sm性调教片在线观看| 久久久av一区| аⅴ资源新版在线天堂| 亚洲国产精品久久久久| 一级黄色片在线播放| 日韩欧美亚洲范冰冰与中字| 欧美三级小视频| 欧美国产一区视频在线观看| 中文字幕 亚洲一区| 国产剧情av麻豆香蕉精品| 91福利国产成人精品播放| 亚洲一区久久| 欧美精品一区二区三区三州| **女人18毛片一区二区| 视频一区亚洲| 精品在线观看入口| 久久综合九九| 久久午夜影院| 成人羞羞视频免费| 国产精品久久久久久av公交车| 国产精品91在线观看| 中文字幕 在线观看| 国内精品久久久久| 日本理论片午伦夜理片在线观看| 久久精品91久久久久久再现| av在线免费观看网| 在线观看日韩www视频免费| 毛片网站在线观看| 亚洲欧美精品suv| 日韩私人影院| 日韩av一区在线| 色婷婷视频在线| 精品国产乱码久久久久久久| 国产黄a三级三级三级| 欧美一级xxx| 国产乱淫片视频| 欧美精品九九99久久| 中文字幕自拍偷拍| 欧美三级视频在线| 在线观看国产精品入口男同| 欧美日韩一区在线观看| 久久久久久av无码免费看大片| 欧洲一区二区av| 中文字幕第一页在线播放| 欧美日韩在线亚洲一区蜜芽| 中文字幕男人天堂| 欧美电影在线免费观看| www.我爱av| 欧美成人免费网站| 无码国产精品高潮久久99| 日韩高清av在线| 国产69精品久久app免费版| 中文字幕在线观看亚洲| 黄色成人在线观看| 欧美精品久久久久| 在线最新版中文在线| 青青在线视频一区二区三区| 欧美123区| 成人网中文字幕| ccyy激情综合| 免费久久99精品国产自| 国产精品探花在线观看| 亚洲自拍偷拍二区| 欧美激情五月| 37pao成人国产永久免费视频| 日韩精品电影一区亚洲| www.成人黄色| 成人免费av在线| japanese中文字幕| 亚洲图片激情小说| 中文字幕在线观看免费视频| 色婷婷综合久久久久中文 | 丰满少妇高潮久久三区| 天天操天天色综合| 中文字幕乱码在线观看| 制服丝袜亚洲精品中文字幕| 人妻精品一区一区三区蜜桃91| 亚洲欧美国产精品| 黄网页在线观看| 26uuu亚洲国产精品| 欧美韩国日本| 狠狠色综合一区二区| 日韩在线观看| 日本xxxxxxxxxx75| 久久精品国产精品亚洲综合| 日本精品一二三| 中文字幕欧美国产| 久久精品无码人妻| 欧美午夜寂寞影院| 亚洲乱码在线观看| 国产亚洲在线播放| 男女视频在线| 国产乱肥老妇国产一区二 | 日韩国产一区三区| 中文字幕免费高清电视剧网站在线观看| 97精品国产97久久久久久| 四虎国产精品免费久久5151| 久久精品99| 狠久久av成人天堂| 国产九九热视频| 久久综合av免费| xxxx 国产| 欧美一区二区私人影院日本| 六十路在线观看| 高清亚洲成在人网站天堂| 欧美亚洲黄色| 欧美日韩在线一区二区三区| 狠狠综合久久| 亚洲 自拍 另类 欧美 丝袜| 亚洲国产激情av| jizz国产在线观看| 亚洲国产精品视频在线观看 | 亚洲女人小视频在线观看| 国产精品免费无遮挡无码永久视频| 精品欧美黑人一区二区三区| 成人免费网址| 91日本在线观看| 日韩欧美精品| 亚洲成色www.777999| 26uuu亚洲综合色| 日本在线视频免费观看| 日韩女优电影在线观看| 成人在线视频亚洲| 成人黄色片网站| 手机在线一区二区三区| 国产一二三区av| 国产精品视频一二| 亚洲天堂五月天| 亚洲色图色老头| 日韩精品专区| 欧美国产一二三区| 亚洲永久在线| 色噜噜在线观看| 色婷婷久久综合| 国内在线免费高清视频| 国产99久久精品一区二区| 自拍亚洲一区| 青青在线免费观看视频| 久久奇米777| 久久人人爽人人爽人人片av免费| 亚洲欧美综合v| 国产精品第一| 91xxx视频| 国产成人自拍网| 久久国产在线视频| 精品国产三级a在线观看| 阿v视频在线| 久久久久资源| 日韩高清不卡在线| 999福利视频| 日韩一区二区三| av免费不卡| 久久影院理伦片| 日本中文字幕一区| 老司机深夜福利网站| 欧美一卡二卡三卡| 大香伊人中文字幕精品| 精品免费日产一区一区三区免费| 妖精视频成人观看www| 五月天综合视频| 欧美日韩成人一区| 日本一级理论片在线大全| 国产日韩在线一区二区三区| 国产一区二区高清| 成人信息集中地| 精品成人佐山爱一区二区| 成人性生交大片免费观看网站| 日韩欧美一区二区视频在线播放 | 日本黄色一区二区| 日本美女高清在线观看免费| 成人动漫视频在线观看完整版| 亚洲黄色天堂| 九一在线免费观看| 日韩精品一区在线观看| 欧美极品videos大乳护士| 亚洲高清视频一区二区| 国产成人免费视频网站| 99超碰在线观看| 日韩日本欧美亚洲| 欧美日韩破处| 自拍偷拍一区二区三区四区| 亚洲一区二区五区| 岛国在线大片| 国产精品乱码一区二区三区| 日韩电影免费一区| 九九久久免费视频| 在线电影av不卡网址| 第四色在线一区二区| 一本色道久久亚洲综合精品蜜桃| 亚洲国产精品一区二区久久恐怖片 |