亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

kaptcha驗(yàn)證碼使用方法詳解

 更新時(shí)間:2018年12月07日 11:22:41   作者:實(shí)踐不斷改變思想  
這篇文章主要為大家詳細(xì)介紹了kaptcha驗(yàn)證碼的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享了kaptcha驗(yàn)證碼的使用方法,供大家參考,具體內(nèi)容如下

1.首先在pom.xml文件中導(dǎo)入Maven依賴

<dependency>
  <groupId>com.github.penggle</groupId>
  <artifactId>kaptcha</artifactId>
  <version>2.3.2</version>
</dependency>

2.在web.xml文件中配置一個(gè)servlet

<servlet>
 <!-- 生成圖片的Servlet -->
 <servlet-name>Kaptcha</servlet-name>
 <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
 <!-- 是否有邊框 -->
 <init-param> 
        <param-name>kaptcha.border</param-name>
 <param-value>no</param-value>
 </init-param>
 <!-- 字體顏色 -->
 <init-param>
   <param-name>kaptcha.textproducer.font.color</param-name>
 <param-value>red</param-value>
 </init-param>
 <!-- 圖片寬度 -->
 <init-param>
 <param-name>kaptcha.image.width</param-name>
 <param-value>135</param-value>
 </init-param>
 <!-- 使用哪些字符生成驗(yàn)證碼 -->
 <init-param>
 <param-name>kaptcha.textproducer.char.string</param-name>
  <param-value>ACDEFHKPRSTWX345679</param-value>
 </init-param>
 <!-- 圖片高度 -->
 <init-param>
  <param-name>kaptcha.image.height</param-name>
  <param-value>50</param-value>
 </init-param>
 <!-- 字體大小 -->
 <init-param>
  <param-name>kaptcha.textproducer.font.size</param-name>
  <param-value>43</param-value>
 </init-param>
 <!-- 干擾線的顏色 -->
 <init-param>
  <param-name>kaptcha.noise.color</param-name>
  <param-value>black</param-value>
 </init-param>
 <!-- 字符個(gè)數(shù) -->
 <init-param>
  <param-name>kaptcha.textproducer.char.length</param-name>
  <param-value>4</param-value>
 </init-param>
 <!-- 使用哪些字體 -->
 <init-param>
  <param-name>kaptcha.textproducer.font.names</param-name>
  <param-value>Arial</param-value>
 </init-param>
 </servlet>
 <!-- 映射的url -->
 <servlet-mapping>
 <servlet-name>Kaptcha</servlet-name>
 <url-pattern>/Kaptcha</url-pattern>
 </servlet-mapping>

3.頁面代碼如下

<div class="item-inner">
 <label for="j_captcha" class="item-title label">驗(yàn)證碼</label>
 <input id="j_captcha" name="j_captcha" type="text" 
  class="form-control in" placeholder="驗(yàn)證碼" />
 <div class="item-input">
   <img id="captcha_img" alt="點(diǎn)擊更換" title="點(diǎn)擊更換"
         onclick="changeVerifyCode(this)" src="../Kaptcha" />
 </div>
</div>

向后端提交數(shù)據(jù)

var verifyCodeActual = $('#j_captcha').val();
 if (!verifyCodeActual) {
  $.toast('請(qǐng)輸入驗(yàn)證碼!');
  return;
 }
 formData.append("verifyCodeActual", verifyCodeActual);

4.js交互

function changeVerifyCode(img) {
 img.src = "../Kaptcha?" + Math.floor(Math.random() * 100);
}

5.后端驗(yàn)證

import javax.servlet.http.HttpServletRequest;

public class CodeUtil {
 public static boolean checkVerifyCode(HttpServletRequest request) {
 String verifyCodeExpected = (String) request.getSession().getAttribute(
  com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
 String verifyCodeActual = HttpServletRequestUtil.getString(request,
  "verifyCodeActual");
 if (verifyCodeActual == null
  || !verifyCodeActual.equalsIgnoreCase(verifyCodeExpected)) {
  return false;
 }
 return true;
 }
}
import javax.servlet.http.HttpServletRequest;

public class HttpServletRequestUtil {
 public static int getInt(HttpServletRequest request, String name) {

 try {
  return Integer.decode(request.getParameter(name));
 } catch (Exception e) {
  return -1;
 }
 }

 public static long getLong(HttpServletRequest request, String name) {

 try {
  return Long.valueOf(request.getParameter(name));
 } catch (Exception e) {
  return -1;
 }
 }

 public static Double getDouble(HttpServletRequest request, String name) {

 try {
  return Double.valueOf(request.getParameter(name));
 } catch (Exception e) {
  return -1d;
 }
 }

 public static Boolean getBoolean(HttpServletRequest request, String name) {

 try {
  return Boolean.valueOf(request.getParameter(name));
 } catch (Exception e) {
  return false;
 }
 }

 public static String getString(HttpServletRequest request, String name) {
 try {
  String result = request.getParameter(name);
  if (result != null) {
  result = result.trim();
  }
  if ("".equals(result))
  result = null;
  return result;
 } catch (Exception e) {
  return null;
 }

 }
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 千萬別這樣使用Arrays.asList詳解

    千萬別這樣使用Arrays.asList詳解

    這篇文章主要給大家介紹了關(guān)于為什么說千萬別這樣使用Arrays.asList()的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Spring 應(yīng)用上下文獲取 Bean 的常用姿勢(shì)實(shí)例總結(jié)

    Spring 應(yīng)用上下文獲取 Bean 的常用姿勢(shì)實(shí)例總結(jié)

    這篇文章主要介紹了Spring 應(yīng)用上下文獲取 Bean,結(jié)合實(shí)例形式總結(jié)分析了Spring 應(yīng)用上下文獲取 Bean的實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • ElasticSearch突然采集不到日志問題解決分析

    ElasticSearch突然采集不到日志問題解決分析

    這篇文章主要為大家介紹了ElasticSearch突然采集不到日志問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Mybatis之a(chǎn)ssociation和collection用法

    Mybatis之a(chǎn)ssociation和collection用法

    這篇文章主要介紹了Mybatis之a(chǎn)ssociation和collection用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java實(shí)現(xiàn)的正則工具類

    java實(shí)現(xiàn)的正則工具類

    這篇文章主要介紹了java實(shí)現(xiàn)的正則工具類,可用于針對(duì)電話號(hào)碼、郵箱、QQ號(hào)碼、QQ密碼、手機(jī)號(hào)的正則驗(yàn)證功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Java游戲服務(wù)器之?dāng)?shù)據(jù)庫表存取封裝

    Java游戲服務(wù)器之?dāng)?shù)據(jù)庫表存取封裝

    這篇文章主要介紹了Java游戲服務(wù)器之?dāng)?shù)據(jù)庫表存取封裝的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • Java中Maven Shade插件的具體使用

    Java中Maven Shade插件的具體使用

    Maven Shade插件它可以幫助你在構(gòu)建項(xiàng)目時(shí)打包所有依賴項(xiàng),并將其打包到一個(gè)單獨(dú)的JAR文件中,本文就介紹一下Maven Shade插件的具體使用,具有一定參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 解決poi導(dǎo)出excel無法打開文件的問題

    解決poi導(dǎo)出excel無法打開文件的問題

    這篇文章主要介紹了解決poi導(dǎo)出excel無法打開文件的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java中List刪除時(shí)需要的注意事項(xiàng)

    java中List刪除時(shí)需要的注意事項(xiàng)

    最近在利用java中的LIST在刪除時(shí)發(fā)現(xiàn)了一個(gè)錯(cuò)我,通過查找相關(guān)的資料終于解決了,覺著有必要分享處理給同樣遇到這個(gè)問題的朋友參考,下面這篇文章主要介紹了java中List刪除時(shí)需要的注意事項(xiàng),需要的朋友可以一起來看看吧。
    2017-01-01
  • 詳解Java線程池的增長過程

    詳解Java線程池的增長過程

    在本篇文章里小編給大家整理的是關(guān)于Java線程池的增長過程以及相關(guān)知識(shí)點(diǎn),需要的朋友們可以參考下。
    2019-08-08

最新評(píng)論