2.新增CaptchaModule模塊類
@IocBean
@At("/captcha")
public class CaptchaModule {
@At
@Ok("raw:png")
public BufferedImage next(HttpSession session, @Param("w") int w, @Param("h") int h) {
if (w * h < 1) {
w = 200;
h = 60;
}
Captcha captcha = new Captcha.Builder(w, h)
.addText().addBackground(new GradiatedBackgroundProducer())
.gimp(new FishEyeGimpyRenderer())
.build();
String text = captcha.getAnswer();
session.setAttribute(Toolkit.captcha_attr, text);
return captcha.getImage();
}
}
- raw代表RawView
- png是RawView中對image/png的縮寫,是數據mime的描述
- 返回值是BufferedImage,且這是image/png, 所以會轉爲圖片顯示. 還支持jpg/webp等格式,詳情參考RawView的源碼吧.
- Captcha有N多的組合和配置,自行選擇啦
3.在頁面中加入驗證碼文本框
<script type="text/javascript">
function next_captcha() {
$("#captcha_img").attr("src", "${base}/captcha/next?_=" + new Date().getTime());
}
</script>
驗證碼<input name="captcha" type="text" value="">
<img id="captcha_img" onclick="next_captcha();return false;" src="${base}/captcha/next"></img>