springmvc:Kaptcha验证码的使用方式

677 阅读1分钟

在常见的登录或者修改信息页面都会有验证码让你进行填写,而每次生成的验证码都是动态生成了,这样就可以很有效的防止用户对服务器进行恶意的重复提交。接下来就是演示怎么使用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、配置好项目后进行演示


输入正确的验证码