Happy Captcha簡易驗證碼
Happy Captcha是一款易于使用的Java驗證碼軟件包,旨在花最短的時間,最少的代碼量,實現(xiàn)Web站點的驗證碼功能。Happy Captcha完全遵循Apache 2.0開源許可協(xié)議,你可以自由使用該軟件,如您在使用Happy Captcha時發(fā)現(xiàn)軟件的任何缺陷,歡迎隨時與我聯(lián)系。
Happy Capthca的源代碼已托管到Github和Gitee,你可以訪問下面的鏈接獲取更多信息:
如果你想快速體驗Happy Captcha的功能,可通過下列方式獲取Happy-Captcha依賴:
Maven
<dependency>
<groupId>com.ramostear</groupId>
<artifactId>Happy-Captcha</artifactId>
<version>1.0.1</version>
</dependency>
Gradle
implementation 'com.ramostear:Happy-Captcha:1.0.1'
一、展示
Happy Captcha提供了圖片和動畫兩種展現(xiàn)形式,驗證碼內(nèi)容包括中文(收錄3500個常用漢字),阿拉伯?dāng)?shù)字(0~9),中文數(shù)字(零至九),中文大寫數(shù)字(零至玖),數(shù)字與字母混合(0~9-a~z-A~Z),數(shù)字與小寫字母混合(0~9-a~z),數(shù)字與大寫字母混合(0~9-A~Z),純小寫字母,純大寫字母,大小寫字母混合以及運(yùn)算表達(dá)式(阿拉伯?dāng)?shù)字運(yùn)算表達(dá)式和中文運(yùn)算表達(dá)式)等12種類型。
| CaptchaType | IMAGE | ANIMATION |
|---|---|---|
| CHINESE | ||
| NUMBER | ||
| NUMBER_ZH_CN | ||
| NUMBER_ZH_HK | ||
| DEFAULT | ||
| WORD | ||
| WORD_LOWER | ||
| WORD_UPPER | ||
| WORD_NUMBER_LOWER | ||
| WORD_NUMBER_UPPER | ||
| ARITHMETIC | ||
| ARITHMETIC_ZH |
二、安裝
如果你的項目使用的是Maven進(jìn)行依賴管理,你只需向pom.xml文件添加下面的配置即可:
<dependency>
<groupId>com.ramostear</groupId>
<artifactId>Happy-Captcha</artifactId>
<version>1.0.1</version>
</dependency>
Gradle用戶則可以通過引入如下的配置獲取Happy Captcha:
implementation 'com.ramostear:Happy-Captcha:1.0.1'
三、使用
HappyCaptcha在設(shè)計時力求過程的簡潔,在默認(rèn)情況下,你只需要書寫一行代碼即可生成漂亮的驗證碼圖片。下面是HappyCaptcha的使用示例:
@Controller
public class HappyCaptchaController{
@GetMapping("/captcha")
public void happyCaptcha(HttpServletRequest reqeust,HttpServletResponse response){
HappyCaptcha.require(request,response).build().finish();
}
}
對于HappyCaptcha而言,只有request和response是必須提供的參數(shù),其余參數(shù)都可以使用缺省值。
在默認(rèn)情況下,HappyCaptcha生成的驗證碼以圖片形式展現(xiàn),內(nèi)容為0~9-a~z-A~Z的字符隨機(jī)組合,字符長度為5,圖片寬度為160,高度為50,字體為微軟雅黑。
四、校驗
用戶輸入的驗證碼校驗是一個必不可少的環(huán)節(jié),HappyCaptcha內(nèi)置了對用戶輸入的驗證碼校驗功能。下面是驗證碼校驗示例:
@Controller
public class CaptchaController{
@PostMapping("/verify")
public String verify(String code,HttpServletRequest request){
//Verification Captcha
boolean flag = HappyCaptcha.verification(request,code,true);
if(flag){
//Other operations...
}
}
}
如果在校驗過程中需要忽略字母大小寫,第三個參數(shù)設(shè)置為true,如果需要強(qiáng)校驗,則設(shè)置為false。
五、清理
當(dāng)驗證碼被使用后,你可以通過HappyCaptcha類種的remove()方法將Session中存放的驗證碼清理掉。下面是清理驗證碼的代碼示例:
@Controller
public class HappyCaptchaController{
@GetMapping("/remove/captcha")
public void removeCaptcha(HttpServletRequest request){
HappyCaptcha.remove(request);
}
}
除HappyCaptcha提供的默認(rèn)方法,你也可以在需要操作的地方,手動清理Session中存放的驗證碼,HappyCaptcha驗證碼的Key為“happy-captcha”。
六、高級特性
通過前面的內(nèi)容,我們已經(jīng)了解到如何快熟的安裝并使用HappyCaptcha生成驗證碼。在接下的內(nèi)容當(dāng)中,將介紹HappyCaptcha更詳細(xì)的內(nèi)容。
6.1 style()
HappyCaptcha提供兩種驗證碼展現(xiàn)形式:圖片和動畫。默認(rèn)的展現(xiàn)形式為圖片,可以通過style()方法修改默認(rèn)值。style()方法的值由CaptchaStyle類提供,可供選擇的值有IMG和ANIM。style()使用示例如下:
HappyCaptcha.require(request,response)
.style(CaptchaStyle.ANIM)
.build().finish();
若展現(xiàn)形式為圖片,則style(CaptchaStyle.IMG)可以省略。
6.2 type()
HappyCaptcha一共提供了12種驗證碼類型,你可以自由選擇其中的一種類型作為驗證碼的內(nèi)容形式。默認(rèn)情況下,驗證碼使用數(shù)字和大小寫字母的混合形式。驗證碼類型值由CaptchaType類提供,內(nèi)容如下表:
| 值 | 說明 |
|---|---|
| DEFAULT | 數(shù)字、大小寫字母隨機(jī)組合 |
| ARITHMETIC | 加、減、乘算數(shù)運(yùn)算表達(dá)式 |
| ARITHMETIC_ZH | 中文簡體加、減、乘算數(shù)運(yùn)算表達(dá)式描述 |
| CHINESE | 常見漢字(3500個)隨機(jī)組合 |
| NUMBER | 0~9數(shù)字隨機(jī)組合 |
| NUMBER_ZH_CN | 中文數(shù)字(零至九)隨機(jī)組合 |
| NUMBER_ZH_HK | 中文繁體數(shù)字(零至玖)隨機(jī)組合 |
| WORD | 大小寫字母隨機(jī)組合 |
| WORD_LOWER | 小寫字母隨機(jī)組合 |
| WORD_UPPER | 大寫字母隨機(jī)組合 |
| WORD_NUMBER_LOWER | 數(shù)字、小寫字母隨機(jī)組合 |
| WORD_NUMBER_UPPER | 數(shù)字、大寫字母隨機(jī)組合 |
type()使用示例如下:
HappyCaptcha.require(request,response)
.type(CaptchaType.CHINESE)
.build().finish();
6.3 length()
length()方法用于設(shè)置驗證碼字符長度,默認(rèn)情況下缺省值為5。你可以通過以下方式對驗證碼字符長度進(jìn)行控制:
HappyCaptcha.require(request,response)
.length(6)
.build().finish();
6.4 width()
width()方法可對驗證碼圖片的寬度進(jìn)行調(diào)節(jié),默認(rèn)的缺省值為160。使用方式如下:
HappyCaptcha.require(request,response)
.width(180)
.build().finish();
6.5 height()
同width()方法一樣,height()方法用于設(shè)置驗證碼圖片的高度,默認(rèn)缺省值為50。使用方式如下:
HappyCaptcha.require(request,response)
.height(60)
.build().finish();
6.6 font()
如果你想改變驗證碼的字體,可通過font()方法進(jìn)行設(shè)置,默認(rèn)缺省字體為微軟雅黑。HappyCaptcha內(nèi)置了四種字體,可以通過Fonts類進(jìn)行調(diào)用。
HappyCaptcha.require(request,response)
.font(Fonts.getInstance().zhFont())
.build().finish();
6.7 鏈?zhǔn)秸{(diào)用
上面介紹了如何修改單個配置,HappyCaptcha支持鏈?zhǔn)秸{(diào)用,可同時對驗證碼的多個屬性進(jìn)行設(shè)置。例如:
@GetMapping("/captcha")
public void captcha(HttpServletRequest req,HttpServletResponse res){
HappyCaptcha.require(req,res)
.style(CaptchaStyle.ANIM) //設(shè)置展現(xiàn)樣式為動畫
.type(CaptchaType.CHINESE) //設(shè)置驗證碼內(nèi)容為漢字
.length(6) //設(shè)置字符長度為6
.width(220) //設(shè)置動畫寬度為220
.height(80) //設(shè)置動畫高度為80
.font(Fonts.getInstance().zhFont()) //設(shè)置漢字的字體
.build().finish(); //生成并輸出驗證碼
}
若驗證碼的類型為ARITHMETIC或ARITHMETIC_ZH,可省略驗證碼長度的設(shè)置。算術(shù)運(yùn)算表達(dá)式的長度為5。
