验证码工具kaptcha的使用方法
在pom.xml中添加依赖
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
编写servlet,并且通过初始化参数配置kaptcha的样式
<!— 验证码工具Kaptcha —>
<servlet>
<servlet-name>kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
<init-param>
<param-name>kaptcha.border</param-name>
<param-value>no</param-value>
</init-param>
<init-param>
<param-name>kaptcha.testproducer.font.color</param-name>
<param-value>red</param-value>
</init-param>
<init-param>
<param-name>kaptcha.image.width</param-name>
<param-value>135</param-value>
</init-param>
<init-param>
<param-name>kaptcha.testproducer.char.string</param-name>
<param-value>ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890</param-value>
</init-param>
<init-param>
<param-name>kaptcha.image.height</param-name>
<param-value>50</param-value>
</init-param>
<init-param>
<param-name>kaptcha.testproducer.font.size</param-name>
<param-value>43</param-value>
</init-param>
<init-param>
<param-name>kaptcha.noise.color</param-name>
<param-value>black</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.char.length</param-name>
<param-value>4</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.font.names</param-name>
<param-value>Arial</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>kaptcha</servlet-name>
<url-pattern>/kaptcha</url-pattern>
</servlet-mapping>
在html中添加验证码图片
<div class=“item-title label”>验证码</div>
<div class="item-input">
<label>
<input id="verificationCode" type="text" placeholder="验证码" src="../kaptcha" alt="验证码" title=“验证码”>
</label>
</div>
<div class="item-input">
<input id="img" type="file">
</div>
实现点击验证码图片后更换验证码图片
function changeVerificationCode(img) {
img.src = "../kaptcha?" + Math.floor(Math.random() * 100);
}
在服务器端取得kaptcha生成的验证码
public static boolean checkVerificationCodeUtil(HttpServletRequest request) {
String expectedCode = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
String actualCode = request.getParameter("verificationCode");
return actualCode != null && actualCode.equals(expectedCode);
}