日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

我們其實很經(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方法為點擊該標(biāo)簽時可以動態(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é)束語

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

分享到:
標(biāo)簽:驗證碼
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定