中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用java搞定網站登錄驗證碼

發布時間:2023-05-06 11:21:04 來源:億速云 閱讀:125 作者:zzz 欄目:開發技術

這篇文章主要講解了“怎么使用java搞定網站登錄驗證碼”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用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

效果如下:

怎么使用java搞定網站登錄驗證碼

驗證碼驗證

后端代碼

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>

效果

怎么使用java搞定網站登錄驗證碼

怎么使用java搞定網站登錄驗證碼

怎么使用java搞定網站登錄驗證碼

感謝各位的閱讀,以上就是“怎么使用java搞定網站登錄驗證碼”的內容了,經過本文的學習后,相信大家對怎么使用java搞定網站登錄驗證碼這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郎溪县| 东兰县| 大余县| 香港| 内乡县| 从化市| 九龙县| 清涧县| 安龙县| 常宁市| 黄石市| 宁德市| 搜索| 萨嘎县| 永春县| 海兴县| 广南县| 梁山县| 嘉义县| 邵东县| 山阳县| 德安县| 巴塘县| 密山市| 綦江县| 永平县| 巴林左旗| 孝感市| 敦煌市| 泊头市| 永吉县| 杨浦区| 瑞金市| 高邮市| 衡南县| 衡阳县| 融水| 西城区| 民丰县| 古浪县| 祁东县|