日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
五分鐘搞定驗證碼,你學(xué)會了嗎?

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

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)睢縣免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

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

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

驗證碼生成

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


com.github.whvcse
easy-captcha
1.6.2

驗證碼格式

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頁面,代碼如下:





驗證碼




訪問后端驗證碼路徑/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");

//三個參數(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 "驗證成功";
}
}

前端代碼





驗證碼驗證

















效果

結(jié)束語

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


網(wǎng)站題目:五分鐘搞定驗證碼,你學(xué)會了嗎?
文章來源:http://www.5511xx.com/article/dhdgsii.html