Kaptcha验证码SSM实现

Kaptcha验证码SSM实现Kaptcha验证码SSM实现CodeUtil静态类:用于接收验证码图片上字符串及验证码框里字符串,并且比较两者,相等返回ture。importjavax.servlet.http.HttpServletRequest;publicclassCodeUtil{publicstaticbooleancheckVerifyCode(HttpServletRequest…

大家好,又见面了,我是你们的朋友全栈君。

Kaptcha验证码SSM实现

在已完成SSM项目里加上kaptcha验证码的简单实现

和pagehelper一样都是只需要一点改动就可以用

首先引入依赖:

<!--kaptcha验证码插件-->
      <dependency>
          <groupId>com.github.penggle</groupId>
          <artifactId>kaptcha</artifactId>
          <version>2.3.2</version>
      </dependency>

接下来

  1. CodeUtil静态类:用于接收验证码图片上字符串及验证码框里字符串,并且比较两者,相等返回ture。
import javax.servlet.http.HttpServletRequest;
public class CodeUtil { 
   
    public static boolean checkVerifyCode(HttpServletRequest request) { 
   
    	//验证码图片字符串
        String verifyCodeExpected = (String)request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
        
        /** *验证码框内字符串,j_captcha为login.jsp上验证码框input的name, *除了这个需要改换成自己的name,其他可以直接套用 *HttpServletRequestUtil是一个工具类 */
        String verifyCodeActual = HttpServletRequestUtil.getString(request, "j_captcha");
        
        if(verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) { 
   
            return false;
        }
        return true;
    }
}
  1. HttpServletRequestUtil工具类:可以直接套用的工具类,获取并转换返回字段里各个类型数的值
import javax.servlet.http.HttpServletRequest;

public class HttpServletRequestUtil { 
   
    public static int getInt(HttpServletRequest request, String name) { 
   

        try { 
   
            return Integer.decode(request.getParameter(name));
        } catch (Exception e) { 
   
            return -1;
        }
    }

    public static long getLong(HttpServletRequest request, String name) { 
   

        try { 
   
            return Long.valueOf(request.getParameter(name));
        } catch (Exception e) { 
   
            return -1;
        }
    }

    public static Double getDouble(HttpServletRequest request, String name) { 
   

        try { 
   
            return Double.valueOf(request.getParameter(name));
        } catch (Exception e) { 
   
            return -1d;
        }
    }

    public static Boolean getBoolean(HttpServletRequest request, String name) { 
   

        try { 
   
            return Boolean.valueOf(request.getParameter(name));
        } catch (Exception e) { 
   
            return false;
        }
    }

    public static String getString(HttpServletRequest request, String name) { 
   
        try { 
   
            String result = request.getParameter(name);
            if (result != null) { 
   
                result = result.trim();
            }
            if ("".equals(result))
                result = null;
            return result;
        } catch (Exception e) { 
   
            return null;
        }

    }
}
  1. Control层:在登陆control部分插入这一段
if(!CodeUtil.checkVerifyCode(request)) { 
   
	msg = "验证码错误";
	//验证码为空或验证码错误返回字段,可以自己在登陆jsp界面增加验证码框内不为空的错误显示
}else { 
   
    return "redirect:/testuser/main";
    //验证通过,重定向到用户主页,可以换成自己的指向用户主页方式
}
  1. jsp界面:界面很简陋,可以自己设置样式
//验证码框和验证码图片的代码,直接插入到登陆的验证表单里也就是用户名和密码下面
<div class="item-inner">
    <label for="j_captcha" class="item-title label">验证码</label>
    <input id="j_captcha" name="j_captcha" type="text" class="form-control in" placeholder="验证码" />
        <div class="item-input">
            <img id="captcha_img" alt="点击更换" title="点击更换" onclick="changeVerifyCode(this)" src="../Kaptcha" />
            /**这里的src值需与web.xml里设置的kaptcha设置里的url-pattern * 相同,可以不用改动直接用,前提是文件结构如下图 */
        </div>
</div>

在这里插入图片描述在这里插入图片描述

//这个可以直接套用,jquery对象依照上面进行设置
<script>

    $('#submit').click (
        function() { 
   
        var formData = new FormData();
        var verifyCodeActual = $('#j_captcha').val();
        //点击提交时,判断验证码是否为空,如果为空,提示输入验证码
        if (!verifyCodeActual) { 
   
            alert('请输入验证码');
            return;
        }
        //如果不为空,将验证码塞进formData里面去
        formData.append('verifyCodeActual', verifyCodeActual);

        //不管提交成功与否,验证码都会更换
        $('#captcha_img').click();
    });

    function changeVerifyCode(img) { 
   
        img.src = "../Kaptcha?" + Math.floor(Math.random() * 100);
        /*利用随机数进行验证码图片替换,这里的src也是要与web.xml里的一致, 要改动的话一起改 */
    }

</script>
  1. web.xml 设置:都是验证码相关的参数样式,可以直接插入
<!-- 验证码相关属性的配置 -->
    <servlet>
        <servlet-name>Kaptcha</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
        <!-- 定义 Kaptcha 的样式 -->
        <!-- 是否有边框 -->
        <init-param>
            <param-name>kaptcha.border</param-name>
            <param-value>no</param-value>
        </init-param>
        <!-- 字体颜色 -->
        <init-param>
            <param-name>kaptcha.textproducer.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.image.height</param-name>
            <param-value>50</param-value>
        </init-param>
        <!-- 使用哪些字符生成验证码 -->
        <init-param>
            <param-name>kaptcha.textproducer.char.string</param-name>
            <param-value>ACDEFHKPRSTWX345975</param-value>
        </init-param>
        <!-- 字体大小 -->
        <init-param>
            <param-name>kaptcha.textproducer.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>
        <!-- 外部访问路径 就是这里,需要改动jsp里src值的话这里也要改-->
        <url-pattern>/Kaptcha</url-pattern>
    </servlet-mapping>

只要更改以上五项就能实现,其中新建CodeUtil静态类和HttpServletRequestUtil工具类

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150688.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 多项分布和的分布_bernoulli多项式

    多项分布和的分布_bernoulli多项式摘要纠错编辑摘要二项分布的典型例子是扔硬币,硬币正面朝上概率为p,重复扔n次硬币,k次为正面的概率即为一个二项分布概率。(严格定义见伯努利实验定义)  把二项分布公式再推广,就得到了多项分布。比如扔骰子,不同于扔硬币,骰子有6个面对应6个不同的点数,这样单次每个点数朝上的概率都是1/6(对应p1~p6,它们的值不一定都是1/6,只要和为1且互斥即可,比如一个形状不规则的骰子),重复扔n

    2022年10月11日
    4
  • 无法完成要求,暂存盘已满_无法使用因为暂存盘已满

    无法完成要求,暂存盘已满_无法使用因为暂存盘已满无法完成请求,因为暂存盘已满。那么就要找到并打开暂存盘。解决方案:1、打开ps软件,点击首选项,点击暂存盘2、暂存盘修改,换成其他的任意一个盘符即可。点击确定完成。…

    2025年8月23日
    3
  • log4j使用方法_altium16详细使用教程

    log4j使用方法_altium16详细使用教程日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j可以免费下载到Log4j最新版本的软件包。

    2025年9月15日
    5
  • 自己用命令强制删除占用的文件或文件夹

    自己用命令强制删除占用的文件或文件夹&#13; 前言&#13;有没有遇到过一些情况?软件卸载了,有些文件夹就是删不掉,提示被占用,mmp,这时候你肯定想到了360文件粉碎机!&#13;mmp,我就删个文件夹还要装个360?谁不知道360是个“大毒瘤”!&#13;自己动手丰衣足食!&#13; 正文&#13;这时候就想到了强大的shell命令,百度一波,还真找到了,&#13;DEL和RD这两个命令可以完…

    2022年5月10日
    49
  • maven安装步骤_eclipse使用maven教程

    maven安装步骤_eclipse使用maven教程前言本篇文章是基于win10系统下载安装Maven的教程。一、Maven介绍1.什么是Maven​ Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。maven是Apache的顶级项目,解释为“专家,内行”,它是一个项目管理的工具,maven自身是纯java开发的,可以使用maven对java项目进行构建、依赖管理。2.Maven的作用依赖管理依赖指的就是是我们项目中需要使用的第三方

    2025年10月3日
    2
  • Qt 音乐播放器「建议收藏」

    Qt 音乐播放器「建议收藏」一、实现功能:1、读取歌曲文件,实现歌曲的播放;2、采用QtDesigner实现歌曲的暂停和播放,歌曲名列表和当前播放歌曲名的显示,上一曲和下一曲歌曲的更换,播放模式的设置,音量的改变,歌曲播放进度的改变;3、读取歌词文件,实现歌词的显示;4、利用QSetting增加歌曲文件和歌词文件的设置功能;5、界面汉化;6、使用CSS进

    2022年4月30日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号