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

Google?Kaptcha驗(yàn)證碼生成的使用實(shí)例說明

 更新時(shí)間:2022年03月08日 10:11:43   作者:kl  
這篇文章主要為大家介紹了Google?Kaptcha驗(yàn)證碼的使用實(shí)例說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Kaptcha是什么?

kaptcha 是谷歌開源的非常實(shí)用的驗(yàn)證碼生成工具,基于SimpleCaptcha的開源項(xiàng)目。使用Kaptcha 生成驗(yàn)證碼十分簡(jiǎn)單并且參數(shù)可以進(jìn)行自定義。只需添加jar包配置下就可以使用,通過配置,可以自己定義驗(yàn)證碼大小、顏色、顯示的字符等等。下面就來講一下如何使用kaptcha生成驗(yàn)證碼以及在服務(wù)器端取出驗(yàn)證碼進(jìn)行校驗(yàn)。

怎么使用Kaptcha?

1.首先下載jar包

要項(xiàng)目使用Kaptcha肯定要依賴kaptcha的jar,maven項(xiàng)目的話直接加入如下依賴,非maven項(xiàng)目就自己下載jar包吧

<dependency>
<groupId>com.github.axet</groupId>
<artifactId>kaptcha</artifactId>
<version>0.0.9</version>
</dependency>

2.配置kaptcha

以項(xiàng)目使用spring為例,配置一個(gè)默認(rèn)的Kaptcha的bean,如下

<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha" scope="singleton">
	    <property name="config">
	        <bean class="com.google.code.kaptcha.util.Config">
	            <constructor-arg>
	                <props>
	                	<prop key="kaptcha.session.key">kaptcha.code</prop>  
	                	<!-- 無邊框 -->
	                    <prop key="kaptcha.border">no</prop>
	                    <prop key="kaptcha.textproducer.font.color">black</prop>
	                    <!-- 渲染效果:水紋:WaterRipple;魚眼:FishEyeGimpy;陰影:ShadowGimpy -->
	                    <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop>
	                    <!-- 不要噪點(diǎn) -->
	                    <prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>
	                    <prop key="kaptcha.image.width">90</prop>
	                    <prop key="kaptcha.image.height">33</prop>
	                    <prop key="kaptcha.textproducer.font.size">25</prop>
	                    <prop key="kaptcha.textproducer.char.length">4</prop>
	                    <prop key="kaptcha.textproducer.char.space">5</prop>
	                    <!-- 和登錄框背景顏色一致 -->
	                    <prop key="kaptcha.background.clear.from">247,247,247</prop>
	                    <prop key="kaptcha.background.clear.to">247,247,247</prop>
	                </props>
	            </constructor-arg>
	        </bean>
	    </property>
	</bean>

3.將驗(yàn)證碼保存進(jìn)session中

將生成的驗(yàn)證碼保存進(jìn)session中,并輸出由驗(yàn)證碼生成的圖片流到頁面

@Autowired
	private Producer captchaProducer;
	@RequestMapping(value = "/kaptchaImage", method = RequestMethod.GET)
    public void kaptcha(HttpServletRequest req, HttpServletResponse rsp) {
		ServletOutputStream out = null;
		try {
	        HttpSession session = req.getSession();
	        rsp.setDateHeader("Expires", 0);
	        rsp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	        rsp.addHeader("Cache-Control", "post-check=0, pre-check=0");
	        rsp.setHeader("Pragma", "no-cache");
	        rsp.setContentType("image/jpeg");
	        String capText = captchaProducer.createText();
	        session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
	        BufferedImage image = captchaProducer.createImage(capText);
	        out = rsp.getOutputStream();
	        ImageIO.write(image, "jpg", out);
	        out.flush();
        }catch(IOException e)
		{
			throw new SystemException(e);
		} finally {
            try {
				out.close();
			} catch (IOException e) {
				throw new SystemException(e);
			}
        }
    }

4.驗(yàn)證碼校驗(yàn)

校驗(yàn)用戶輸入的驗(yàn)證碼和保存進(jìn)session的是否一直,達(dá)到驗(yàn)證目的

@RequestMapping(value = "/login", method = RequestMethod.POST, produces = "text/html; charset=utf-8")
	public String userLogin(String accountName, String password, String captcha, Boolean rememberMe, HttpServletRequest request) {
		 //從session中取出kaptcha生成的驗(yàn)證碼text值
	        String expected = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
	        //獲取用戶頁面輸入的驗(yàn)證碼
	        if(!captcha.equalsIgnoreCase(expected))
	        {
	        	request.setAttribute("error", "驗(yàn)證碼錯(cuò)誤!");
				return "/login";
	        }else
	        {
                    xxxx驗(yàn)證碼后的后續(xù)邏輯
                 }
}

Kaptcha驗(yàn)證碼配置

kaptcha.border  是否有邊框  默認(rèn)為true  我們可以自己設(shè)置yes,no  

kaptcha.border.color   邊框顏色   默認(rèn)為Color.BLACK  

kaptcha.border.thickness  邊框粗細(xì)度  默認(rèn)為1  

kaptcha.producer.impl   驗(yàn)證碼生成器  默認(rèn)為DefaultKaptcha  

kaptcha.textproducer.impl   驗(yàn)證碼文本生成器  默認(rèn)為DefaultTextCreator  

kaptcha.textproducer.char.string   驗(yàn)證碼文本字符內(nèi)容范圍  默認(rèn)為abcde2345678gfynmnpwx  

kaptcha.textproducer.char.length   驗(yàn)證碼文本字符長(zhǎng)度  默認(rèn)為5  

kaptcha.textproducer.font.names    驗(yàn)證碼文本字體樣式  默認(rèn)為new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)  

kaptcha.textproducer.font.size   驗(yàn)證碼文本字符大小  默認(rèn)為40  

kaptcha.textproducer.font.color  驗(yàn)證碼文本字符顏色  默認(rèn)為Color.BLACK  

kaptcha.textproducer.char.space  驗(yàn)證碼文本字符間距  默認(rèn)為2  

kaptcha.noise.impl    驗(yàn)證碼噪點(diǎn)生成對(duì)象  默認(rèn)為DefaultNoise  

kaptcha.noise.color   驗(yàn)證碼噪點(diǎn)顏色   默認(rèn)為Color.BLACK  

kaptcha.obscurificator.impl   驗(yàn)證碼樣式引擎  默認(rèn)為WaterRipple  

kaptcha.word.impl   驗(yàn)證碼文本字符渲染   默認(rèn)為DefaultWordRenderer  

kaptcha.background.impl   驗(yàn)證碼背景生成器   默認(rèn)為DefaultBackground  

kaptcha.background.clear.from   驗(yàn)證碼背景顏色漸進(jìn) &nbsp; 默認(rèn)為Color.LIGHT_GRAY  

kaptcha.background.clear.to   驗(yàn)證碼背景顏色漸進(jìn)   默認(rèn)為Color.WHITE  

kaptcha.image.width   驗(yàn)證碼圖片寬度  默認(rèn)為200  

kaptcha.image.height  驗(yàn)證碼圖片高度  默認(rèn)為50

效果圖如下

以上就是Google Kaptcha驗(yàn)證碼的使用實(shí)例說明的詳細(xì)內(nèi)容,更多關(guān)于Google Kaptcha驗(yàn)證碼使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中@ConditionalOnProperty注解使用

    Java中@ConditionalOnProperty注解使用

    在Spring?Boot中,@ConditionalOnProperty注解是一種方便的工具,用于根據(jù)應(yīng)用程序配置文件中的屬性值來控制Bean的創(chuàng)建和加載,本文就來介紹一下Java中@ConditionalOnProperty注解使用,感興趣的可以了解一下
    2023-11-11
  • 淺談Java生命周期管理機(jī)制

    淺談Java生命周期管理機(jī)制

    最近有位細(xì)心的朋友在閱讀筆者的文章時(shí),對(duì)java類的生命周期問題有一些疑惑,筆者打開百度搜了一下相關(guān)的問題,看到網(wǎng)上的資料很少有把這個(gè)問題講明白的,主要是因?yàn)槟壳皣?guó)內(nèi)java方面的教材大多只是告訴你“怎樣做”,但至于“為什么這樣做”卻不多說
    2016-01-01
  • 解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題

    解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題

    這篇文章主要介紹了解決RestTemplate 的getForEntity調(diào)用接口亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • MyBatis實(shí)現(xiàn)三級(jí)樹查詢的示例代碼

    MyBatis實(shí)現(xiàn)三級(jí)樹查詢的示例代碼

    在實(shí)際項(xiàng)目開發(fā)中,樹形結(jié)構(gòu)的數(shù)據(jù)查詢是一個(gè)非常常見的需求,比如組織架構(gòu)、菜單管理、地區(qū)選擇等場(chǎng)景都需要處理樹形數(shù)據(jù),本文將詳細(xì)講解如何使用MyBatis實(shí)現(xiàn)三級(jí)樹形數(shù)據(jù)的查詢,需要的朋友可以參考下
    2024-12-12
  • mybatis攔截器的使用方式(輸出日志或sql語句)

    mybatis攔截器的使用方式(輸出日志或sql語句)

    這篇文章主要介紹了mybatis攔截器的使用方式(輸出日志或sql語句),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Java多線程實(shí)戰(zhàn)之交叉打印的兩種方法

    Java多線程實(shí)戰(zhàn)之交叉打印的兩種方法

    今天小編就為大家分享一篇關(guān)于Java多線程實(shí)戰(zhàn)之交叉打印的兩種方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • java單例模式使用詳解

    java單例模式使用詳解

    這篇文章主要介紹了java單例模式使用方法,通常它的實(shí)現(xiàn)方式分為懶漢式實(shí)現(xiàn)和餓漢式,下面是詳細(xì)說明加示例,需要的朋友可以參考下
    2014-04-04
  • Spring框架的ImportSelector詳細(xì)解讀

    Spring框架的ImportSelector詳細(xì)解讀

    這篇文章主要介紹了Spring框架的ImportSelector詳細(xì)解讀,Spring中一個(gè)非常重要的注解@Import中的ImportSelector接口的作用以及它到底有啥作用,也會(huì)捎帶一部分源碼說一下DeferredImportSelector是干啥的,需要的朋友可以參考下
    2024-01-01
  • 解決feignclient調(diào)用服務(wù),傳遞的中文數(shù)據(jù)成???問題

    解決feignclient調(diào)用服務(wù),傳遞的中文數(shù)據(jù)成???問題

    這篇文章主要介紹了解決feignclient調(diào)用服務(wù),傳遞的中文數(shù)據(jù)成???問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件詳解

    Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件詳解

    這篇文章主要介紹了Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論

青河县| 奎屯市| 洛隆县| 汽车| 西充县| 麦盖提县| 桂阳县| 柯坪县| 积石山| 府谷县| 潮州市| 高安市| 保亭| 沂水县| 霍山县| 汽车| 沽源县| 岱山县| 高邮市| 城固县| 鸡西市| 陈巴尔虎旗| 攀枝花市| 遂宁市| 永泰县| 绥阳县| 信丰县| 玉环县| 衡南县| 陆河县| 无锡市| 济源市| 莫力| 兴化市| 林州市| 和田县| 团风县| 通许县| 丘北县| 洛宁县| 呼玛县|