Kaptcha是Google提供的一個圖形驗證碼插件皂甘,可以從官網(wǎng)https://code.google.com/p/kaptcha/了解更多的詳情祭陷。
它的源代碼是公開的,在上面的官網(wǎng)提供的download項知态,可以下載一個zip包倒得,里面包含了jar包和源代碼。
從源代碼中患蹂,可以獲得Kaptcha這個項目的結(jié)構(gòu)(整體的Kaptcha是由Producer
實現(xiàn)的):
- 生成一個text或颊,使用
TextProducer
砸紊。 - 基于text,把包裹它的圖片生成出來:
- Render the text (word)囱挑,使用
WordRenderer
- Background (add background)醉顽,使用
BackgroundProducer
- Gimpy (distort image),使用
GimpyEngine
- Noise看铆,使用
NoiseProducer
- Noise看铆,使用
- Draw box徽鼎,單獨方法實現(xiàn)
- Render the text (word)囱挑,使用
可以看到盛末,整體的業(yè)務(wù)邏輯思路都是用Interface來連接的弹惦,這給了后面的實現(xiàn)極大的靈活性。
Kaptcha的結(jié)構(gòu)
如上圖所示悄但,為了讓Kaptcha可以使用配置文件被靈活配置棠隐,專門提供了一個Configurable
接口。如果你需要自己實現(xiàn)一個可配置的類檐嚣,僅需implement Configurable
就可以了助泽。
在Configurable
中,提供了一個代理Config
來處理/返回具體的事務(wù)/配置參數(shù)嚎京。而在Config
中嗡贺,又提供了一個ConfigHelper
專門做配置文件的解析。
這樣的代理模式鞍帝,讓整體結(jié)構(gòu)清晰而靈活诫睬。
而作為整個項目的核心入口,當(dāng)然是KaptchaServlet
帕涌,里面做的工作就是簡單地實現(xiàn)Servlet的doGet()
方法:根據(jù)Properties創(chuàng)建出一個Config
摄凡。有了它,便可以創(chuàng)建出相應(yīng)的KaptchaProducer
蚓曼。