【Javaweb】如何生成验证码

1、添加jar包 kaptcha-2.3.2.jar 到项目

在这里插入图片描述

2、在web.xml中配置生成servlet验证码的程序

<servlet>
    <servlet-name>KaptchaServletservlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServletservlet-class>
servlet>
<servlet-mapping>
    <servlet-name>KaptchaServletservlet-name>
    <url-pattern>/Kaptcha.jpgurl-pattern>
servlet-mapping>

3、在表单中显示验证码并使用

【Javaweb】如何生成验证码_第1张图片

4、在服务器获取谷歌生成的验证码和客户端发送过来的验证码相比较

  //获取Session中的验证码
        String token = (String) req.getSession().getAttribute(KAPTCHA_SESSION_KEY);
        //删除Session中的验证码
        req.getSession().removeAttribute(KAPTCHA_SESSION_KEY);
        //2、检查验证码是否正确
        if (token != null && token.equalsIgnoreCase(code)/*忽略大小写*/) {
     
            if (userService.existsUsername(username)) {
     
                //用户名不可用
                req.setAttribute("msg", "用户名已存在!");
                req.getRequestDispatcher("regist.jsp").forward(req, resp);
            } else {
     
                //可用
                //保存在数据库
                userService.registerUser(new User(null, username, password, email));
                //跳转到注册登录页面
                req.getRequestDispatcher("login.jsp").forward(req, resp);
            }

5、点击验证码图片会切换验证码

为图片绑定单击事件
+new Date()为了跳过服务器的缓存,(因为为了速度,浏览器每次会将请求缓存到浏览器端)这样使得每次得请求不同

<script>
    //页面加载完成之后
    $(function () {
     
        //给验证码图片 绑定单击事件
        $("#code_img").click(function () {
     
        //
            this.src = "${basePath}Kaptcha.jpg?d="+new Date();
        });
    });
</script>

你可能感兴趣的