最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring MVC中使用Google kaptcha驗證碼的方法詳解

 更新時間:2017年10月22日 10:21:36   作者:Orson  
kaptcha 是一個非常實用的驗證碼生成工具。有了它,你可以生成各種樣式的驗證碼,因為它是可配置的,下面這篇文章主要給大家介紹了關(guān)于Spring MVC中使用Google kaptcha驗證碼的方法,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

眾所周知驗證碼是抵抗批量操作和惡意登錄最有效的方式之一,我們在每天或許都會遇到,驗證碼從產(chǎn)生到現(xiàn)在已經(jīng)衍生出了很多分支、方式。google kaptcha 是一個非常實用的驗證碼生成類庫。

通過靈活的配置生成各種樣式的驗證碼,并將生成的驗證碼字符串放到 HttpSession 中,方便獲取進行比較。

本文描述在 spring mvc 下快速的將 google kaptcha 集成到項目中(單獨使用的話在 web.xml 中配置 KaptchaServlet)。下面話不多說了,來一起看看詳細的介紹吧。

1.maven 依賴

官方提供的 pom 無法正常使用,使用阿里云倉庫對應(yīng) kaptcha。

<!-- google 驗證碼 -->
<dependency>
 <groupId>com.github.penggle</groupId>
 <artifactId>kaptcha</artifactId>
 <version>${kaptcha.version}</version>
</dependency>

2.前端

<img id="kaptchaImage" src="${pageContext.request.contextPath}/captcha-image" width="116" height="36">
$(function(){
 $('#kaptchaImage').click(function () {
  $(this).hide().attr('src', '${ctx}/captcha-image?' + Math.floor(Math.random()*100) ).fadeIn();
  event.cancelBubble=true;
 });
 });

3.mvc-context 配置

<!--goole captcha 驗證碼配置-->
 <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
 <property name="config">
  <bean class="com.google.code.kaptcha.util.Config">
  <constructor-arg>
   <props>
   <prop key="kaptcha.border">no</prop>
   <prop key="kaptcha.textproducer.font.size">45</prop>
   <prop key="kaptcha.textproducer.font.color">blue</prop>
   <prop key="kaptcha.textproducer.char.length">4</prop>
   <prop key="kaptcha.session.key">code</prop>
   </props>
  </constructor-arg>
  </bean>
 </property>
 </bean>

更多參數(shù):

Constant 描述 默認值
kaptcha.border 圖片邊框,合法值:yes , no yes
kaptcha.border.color 邊框顏色,合法值: r,g,b (and optional alpha) 或者 white,black,blue. black
kaptcha.border.thickness 邊框厚度,合法值:>0 1
kaptcha.image.width 圖片寬 200
kaptcha.image.height 圖片高 50
kaptcha.producer.impl 圖片實現(xiàn)類 com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl 文本實現(xiàn)類 com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string 文本集合,驗證碼值從此集合中獲取 abcde2345678gfynmnpwx
kaptcha.textproducer.char.length 驗證碼長度 5
kaptcha.textproducer.font.names 字體 Arial, Courier
kaptcha.textproducer.font.size 字體大小 40px
kaptcha.textproducer.font.color 字體顏色,合法值: r,g,b  或者 white,black,blue. black
kaptcha.textproducer.char.space 文字間隔 2
kaptcha.noise.impl 干擾實現(xiàn)類 com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color 干擾顏色,合法值: r,g,b 或者 white,black,blue. black
kaptcha.obscurificator.impl 圖片樣式:
水紋com.google.code.kaptcha.impl.WaterRipple
魚眼com.google.code.kaptcha.impl.FishEyeGimpy
陰影com.google.code.kaptcha.impl.ShadowGimpy
com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl 背景實現(xiàn)類 com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from 背景顏色漸變,開始顏色 light grey
kaptcha.background.clear.to 背景顏色漸變,結(jié)束顏色 white
kaptcha.word.impl 文字渲染器 com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.key session key KAPTCHA_SESSION_KEY
kaptcha.session.date session date KAPTCHA_SESSION_DATE

4.服務(wù)端

@Controller
public class CaptchaController {

 private final Producer captchaProducer;

 @Autowired
 public CaptchaController(Producer captchaProducer) {
 this.captchaProducer = captchaProducer;
 }

 @RequestMapping(value = "captcha-image")
 public String getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
 response.setDateHeader("Expires", 0);
 response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
 response.addHeader("Cache-Control", "post-check=0, pre-check=0");
 response.setHeader("Pragma", "no-cache");
 response.setContentType("image/jpeg");

 String capText = captchaProducer.createText();
 request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
 BufferedImage bi = captchaProducer.createImage(capText);
 ServletOutputStream out = response.getOutputStream();
 ImageIO.write(bi, "jpg", out);

 try {
  out.flush();
 } finally {
  out.close();
 }
 return null;
 }
}

5.session 中獲取驗證碼

request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);

總結(jié)

以上就是這篇文章的全部內(nèi)容了,本文還有許多不足,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Java生產(chǎn)1-100的隨機數(shù)簡單實例(分享)

    Java生產(chǎn)1-100的隨機數(shù)簡單實例(分享)

    下面小編就為大家?guī)硪黄狫ava生產(chǎn)1-100的隨機數(shù)簡單實例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • JavaSE遞歸求解漢諾塔問題的思路與方法

    JavaSE遞歸求解漢諾塔問題的思路與方法

    遞歸是一種非常重要的算法思想,無論你是前端開發(fā),還是后端開發(fā),都需要掌握它,下面這篇文章主要給給大家介紹了關(guān)于JavaSE遞歸求解漢諾塔問題的思路與方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • SpringBoot項目打成war和jar的區(qū)別說明

    SpringBoot項目打成war和jar的區(qū)別說明

    這篇文章主要介紹了SpringBoot項目打成war和jar的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java 實現(xiàn)攔截器Interceptor的攔截功能方式

    Java 實現(xiàn)攔截器Interceptor的攔截功能方式

    這篇文章主要介紹了Java 實現(xiàn)攔截器Interceptor的攔截功能方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java 實現(xiàn)線程同步的方式有哪些

    java 實現(xiàn)線程同步的方式有哪些

    當(dāng)使用多個線程來訪問同一個數(shù)據(jù)時,非常容易出現(xiàn)線程安全問題,所以我們用同步機制來解決這些問題,本文將詳細介紹,需要的朋友可以參考下
    2012-11-11
  • Javaweb實現(xiàn)上傳下載文件的多種方法

    Javaweb實現(xiàn)上傳下載文件的多種方法

    本篇文章主要介紹了Javaweb實現(xiàn)上傳下載文件,有多種實現(xiàn)方式,需要的朋友可以參考下。
    2016-10-10
  • java提高篇(二三)-----HashMap詳解

    java提高篇(二三)-----HashMap詳解

    HashMap基于哈希表的 Map 接口的實現(xiàn),本篇文章主要講訴了java中HashMap,有興趣的可以了解一下。
    2016-11-11
  • 關(guān)于java數(shù)組與字符串相互轉(zhuǎn)換的問題

    關(guān)于java數(shù)組與字符串相互轉(zhuǎn)換的問題

    這篇文章主要介紹了java數(shù)組與字符串相互轉(zhuǎn)換的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Java類和對象習(xí)題及詳細答案解析

    Java類和對象習(xí)題及詳細答案解析

    這篇文章主要介紹了Java類和對象的相關(guān)知識,包括局部變量初始化、靜態(tài)方法、靜態(tài)導(dǎo)入、構(gòu)造方法、代碼塊執(zhí)行順序、toString方法重寫、類變量和靜態(tài)成員變量的訪問等,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • SpringMVC 單文件,多文件上傳實現(xiàn)詳解

    SpringMVC 單文件,多文件上傳實現(xiàn)詳解

    這篇文章主要介紹了SpringMVC 單文件,多文件上傳實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09

最新評論

澄迈县| 衢州市| 芮城县| 井陉县| 泰和县| 应用必备| 库伦旗| 庄河市| 芒康县| 调兵山市| 资溪县| 建德市| 辽源市| 正定县| 湾仔区| 甘德县| 余庆县| 威信县| 景宁| 玉龙| 阳西县| 桐庐县| 昭苏县| 龙川县| 乌兰浩特市| 海丰县| 新巴尔虎右旗| 湄潭县| 瑞昌市| 宁晋县| 贵州省| 咸丰县| 黔西| 大厂| 安阳县| 鹤庆县| 卓资县| 万盛区| 大同市| 禹州市| 水富县|