最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

5分鐘教你使用java搞定網(wǎng)站登錄驗(yàn)證碼

 更新時(shí)間:2023年04月04日 10:32:06   作者:了不起?Java技術(shù)指北  
這篇文章主要為大家介紹了使用java搞定網(wǎng)站登錄驗(yàn)證碼的快速實(shí)現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

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

今天我們講一下在 Java 中驗(yàn)證碼的使用。

驗(yàn)證碼生成

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

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

驗(yàn)證碼格式

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

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

字符類型分為以下幾種:

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

后端邏輯的實(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");
?
????????//三個(gè)參數(shù)分別為寬、高、位數(shù)
????????SpecCaptcha?captcha=new?SpecCaptcha(75,30,4);
?
????????//設(shè)置類型為數(shù)字和字母混合
????????captcha.setCharType(Captcha.TYPE_DEFAULT);
?
????????//設(shè)置字體
????????captcha.setCharType(Captcha.FONT_9);
?
????????//驗(yàn)證碼存入session
????????httpServletRequest.getSession().setAttribute("verifyCode",captcha.text().toLowerCase());
?
????????//輸出圖片流
????????captcha.out(httpServletResponse.getOutputStream());
????}
?
}

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

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

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

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

訪問(wèn)后端驗(yàn)證碼路徑/kaptcha,驗(yàn)證碼為圖片形式。onclick方法為點(diǎn)擊該標(biāo)簽時(shí)可以動(dòng)態(tài)切換顯示驗(yàn)證碼。

啟動(dòng)Spring Boot項(xiàng)目,打開(kāi)瀏覽器輸入地址:

http://localhost:8080/kaptcha.html

效果如下:

驗(yàn)證碼驗(yà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?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");
?
????????//三個(gè)參數(shù)分別為寬、高、位數(shù)
????????SpecCaptcha?captcha=new?SpecCaptcha(75,30,4);
?
????????//設(shè)置類型為數(shù)字和字母混合
????????captcha.setCharType(Captcha.TYPE_DEFAULT);
?
????????//設(shè)置字體
????????captcha.setCharType(Captcha.FONT_9);
?
????????//驗(yàn)證碼存入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?"驗(yàn)證碼不能為空";
????????}
????????String?kapchaCode?=?session.getAttribute("verifyCode")+"";
????????if(StringUtils.isEmpty(kapchaCode)||!code.toLowerCase().equals(kapchaCode)){
????????????return?"驗(yàn)證碼輸入錯(cuò)誤";
????????}
????????return?"驗(yàn)證成功";
????}
}

前端代碼

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


<input?type="text"?maxlength="5"?id="code"?placeholder="請(qǐng)輸入驗(yàn)證碼"/>
<button?id="verify">驗(yàn)證</button>


<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(){
??//驗(yàn)證按鈕點(diǎn)擊事件
???$('#verify').click(function(){
????var?code=$('#code').val();
????$.ajax({
??????type:'GET',//方法類型
??????url:'/verify?code='+code,
??????success:function(result){
????????$('#verifyResult').html(result);
??????},
??????error:function(){
????????alert('請(qǐng)求失敗');
??????},
????});
???});
??});
</script>
</html>

效果

結(jié)束語(yǔ)

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

以上就是5分鐘教你使用java搞定網(wǎng)站登錄驗(yàn)證碼的詳細(xì)內(nèi)容,更多關(guān)于java 網(wǎng)站登錄驗(yàn)證碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

高邮市| 布拖县| 哈密市| 襄樊市| 集安市| 乌兰县| 日照市| 哈密市| 洛扎县| 两当县| 二连浩特市| 安义县| 齐齐哈尔市| 玉龙| 高平市| 丰顺县| 洪江市| 安康市| 侯马市| 镇原县| 临夏市| 定兴县| 晴隆县| 永川市| 德江县| 贵德县| 陇西县| 苗栗市| 红河县| 宽甸| 定边县| 太和县| 和龙市| 金平| 柳州市| 诸城市| 五河县| 株洲市| 贵南县| 泰兴市| 咸丰县|