1.首先需要導入jar包
2.配置spring的配置文件applicationContext.xml
<!-- kaptcha實現驗證碼配置 -->
<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">yes</prop>
<prop key="kaptcha.border.color">105,179,90</prop>
<prop key="kaptcha.textproducer.font.color">blue</prop>
<prop key="kaptcha.image.width">120</prop>
<prop key="kaptcha.image.height">40</prop>
<prop key="kaptcha.textproducer.font.size">40</prop>
<prop key="kaptcha.session.key">code</prop>
<prop key="kaptcha.textproducer.char.length">4</prop>
<prop key="kaptcha.textproducer.font.names">宋體,楷體,微軟雅黑</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
其中,驗證碼相關的屬性如下,可以自己進行設置
kaptcha.border 是否有邊框 默認爲true 我們可以自己設置yes,no
kaptcha.border.color 邊框顏色 默認爲Color.BLACK
kaptcha.border.thickness 邊框粗細度 默認爲1
kaptcha.producer.impl 驗證碼生成器 默認爲DefaultKaptcha
kaptcha.textproducer.impl 驗證碼文本生成器 默認爲DefaultTextCreator
kaptcha.textproducer.char.string 驗證碼文本字符內容範圍 默認爲abcde2345678gfynmnpwx
kaptcha.textproducer.char.length 驗證碼文本字符長度 默認爲5
kaptcha.textproducer.font.names 驗證碼文本字體樣式 默認爲new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
kaptcha.textproducer.font.size 驗證碼文本字符大小 默認爲40
kaptcha.textproducer.font.color 驗證碼文本字符顏色 默認爲Color.BLACK
kaptcha.textproducer.char.space 驗證碼文本字符間距 默認爲2
kaptcha.noise.impl 驗證碼噪點生成對象 默認爲DefaultNoise
kaptcha.noise.color 驗證碼噪點顏色 默認爲Color.BLACK
kaptcha.obscurificator.impl 驗證碼樣式引擎 默認爲WaterRipple
kaptcha.word.impl 驗證碼文本字符渲染 默認爲DefaultWordRenderer
kaptcha.background.impl 驗證碼背景生成器 默認爲DefaultBackground
kaptcha.background.clear.from 驗證碼背景顏色漸進 默認爲Color.LIGHT_GRAY
kaptcha.background.clear.to 驗證碼背景顏色漸進 默認爲Color.WHITE
kaptcha.image.width 驗證碼圖片寬度 默認爲200
kaptcha.image.height 驗證碼圖片高度 默認爲50
3.創建生成驗證碼的controller,代碼如下
package com.book.controller;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.ModelAndView;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
@Controller
@RequestMapping("/code")
public class CaptchaController {
//從spring容器中取值
private ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Producer captchaProducer = (Producer)ctx.getBean("captchaProducer");
@RequestMapping(value = "/captcha-image")
public ModelAndView getKaptchaImage(HttpServletRequest request,HttpServletResponse response) throws IOException{
HttpSession session = request.getSession();
String code = (String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY);
System.out.println("產生的驗證碼是:"+code);
//相關參數的設置
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();
session.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;
}
}
4.登錄界面的相關代碼
<script type="text/javascript">
function changeR(node){
//用於點擊時產生不同的驗證碼
node.src = "./code/captcha-image?time="+new Date().getTime();
}
</script>
<tr>
<td>驗證碼:</td>
<td><input type="text" id="index_code" name="verifyCode"></td>
<td><img id="kaptchaImage" alt="驗證碼" src="./code/captcha-image" οnclick="changeR(this)" style="cursor:pointer;"/></td>
</tr>
5.在用戶登錄的controller中取值校驗可以使用如下代碼
//獲取生成的驗證碼
String code = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
6.相關jar包的下載地址
http://pan.baidu.com/s/1bICWpC