在常见的登录或者修改信息页面都会有验证码让你进行填写,而每次生成的验证码都是动态生成了,这样就可以很有效的防止用户对服务器进行恶意的重复提交。接下来就是演示怎么使用kaptcha验证码进行验证。该项目是使用springmvc中进行调试,所以需要先在IDE中搭建好springmvc环境。
1、在pom.xml中导入jar包依赖
<!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
2、在web.xml添加配置信息
<!-- 添加验证码配置信息 -->
<servlet>
<servlet-name>Kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Kaptcha</servlet-name>
<url-pattern>/kaptcha.jpg</url-pattern>
</servlet-mapping>
</web-app>3、在前端页面添加验证码
<!-- 因为这里web.xml在下一层目录,所以使用的是 src="kaptcha.jpg" -->
<!-- 这里需要注意“kaptcha”的路径问题-->
<input type="image" alt="点击更换" title="点击更换"
onclick="changeVerifyCode(this)" src="kaptcha.jpg" /><br/>
<form action="kaptcha.do" method="get">
验证码:<br/>
<input name="j_captcha" type="text" placeholder="验证码" />
<input type="submit" name="submit" value="提交"/>
</form>
<!-- 点击验证码图片就会调用该方法更换验证码-->
<script>
function changeVerifyCode(img) {
img.src = "kaptcha.jpg?" + Math.floor(Math.random() * 100);
}
</script>4、后台实现验证
//KaptchaServlet会把验证码设置到session中
@Controller
public class Kaptcha {
@RequestMapping("/kaptcha.do")
public ModelAndView helloWorld(HttpServletRequest request){
ModelAndView modelMap = new ModelAndView();
String message = null;
String verifyCodeExpected = (String)request.getSession().
getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String verifyCodeActual = request.getParameter("j_captcha");
if(verifyCodeActual == null ||
!verifyCodeActual.equalsIgnoreCase(verifyCodeExpected)){
message = "verify fail";
}else{
message = "verify success";
}
modelMap.addObject("message", message);
modelMap.setViewName("result");
return modelMap;
}
}5、配置好项目后进行演示
输入正确的验证码