欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

5分鐘教你使用java搞定網站登錄驗證碼

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

正文

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

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

驗證碼生成

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

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

驗證碼格式

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

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

字符類型分為以下幾種:

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

后端邏輯的實現(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");
?
????????//三個參數分別為寬、高、位數
????????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

前端邏輯的實現(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");
?
????????//三個參數分別為寬、高、位數
????????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()'">
?


<input?type="text"?maxlength="5"?id="code"?placeholder="請輸入驗證碼"/>
<button?id="verify">驗證</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(){
??//驗證按鈕點擊事件
???$('#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>

效果

結束語

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

以上就是5分鐘教你使用java搞定網站登錄驗證碼的詳細內容,更多關于java 網站登錄驗證碼的資料請關注腳本之家其它相關文章!

相關文章

  • 簡單理解Spring之IOC和AOP及代碼示例

    簡單理解Spring之IOC和AOP及代碼示例

    這篇文章主要介紹了簡單理解Spring之IOC和AOP及代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • Spring詳細講解事務失效的場景

    Spring詳細講解事務失效的場景

    實際項目開發(fā)中,如果涉及到多張表操作時,為了保證業(yè)務數據的一致性,大家一般都會采用事務機制,好多小伙伴可能只是簡單了解一下,遇到事務失效的情況,便會無從下手,下面這篇文章主要給大家介紹了關于Spring事務失效場景的相關資料,需要的朋友可以參考下
    2022-07-07
  • SpringCloud?Feign請求頭刪除修改的操作代碼

    SpringCloud?Feign請求頭刪除修改的操作代碼

    這篇文章主要介紹了SpringCloud?Feign請求頭刪除修改,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • IntelliJ IDEA中代碼一鍵生成方法

    IntelliJ IDEA中代碼一鍵生成方法

    EasyCode 是基于 IntelliJ IDEA 開發(fā)的代碼生成插件,支持自定義任意模板(Java,html,js,xml),這篇文章主要介紹了IntelliJ IDEA中代碼一鍵生成方法,需要的朋友可以參考下
    2020-02-02
  • Spring Boot Debug調試過程圖解

    Spring Boot Debug調試過程圖解

    這篇文章主要介紹了Spring Boot Debug調試過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot中注解實現(xiàn)定時任務的兩種方式

    SpringBoot中注解實現(xiàn)定時任務的兩種方式

    這篇文章主要介紹了SpringBoot中注解實現(xiàn)定時任務的兩種方式,SpringBoot 定時任務是一種在SpringBoot應用中自動執(zhí)行任務的機制,通過使用Spring框架提供的@Scheduled注解,我們可以輕松地創(chuàng)建定時任務,需要的朋友可以參考下
    2023-10-10
  • Java實現(xiàn)最小生成樹MST的兩種解法

    Java實現(xiàn)最小生成樹MST的兩種解法

    最小生成樹(MST)指在連通圖的所有生成樹中,所有邊的權值和最小的生成樹。本文介紹了求最小生成樹的兩種方法:Prim算法和Kruskal算法,需要的可以參考一下
    2022-05-05
  • Java設計模式之責任鏈模式

    Java設計模式之責任鏈模式

    這篇文章介紹了Java設計模式之責任鏈模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • java 指定某個jdk版本方法

    java 指定某個jdk版本方法

    這篇文章主要介紹了java 指定某個jdk版本方法的相關資料,需要的朋友可以參考下
    2017-05-05
  • java如何實現(xiàn)自動生成數據庫設計文檔

    java如何實現(xiàn)自動生成數據庫設計文檔

    以前我們還需要手寫數據庫設計文檔、現(xiàn)在可以通過引入screw核心包來實現(xiàn)Java?數據庫文檔一鍵生成。本文將具體介紹一下如何通過java自動生成數據庫設計文檔,需要的朋友可以參考下
    2021-11-11

最新評論