关于ssm框架中引入验证码问题

一般在网站的注册页面中肯定会有验证码的部分(在购物o2b网站中还有可能两个注册地方运用(商家注册,用户注册))

1.最简单的方式,在web.xml文件中引入servlet(还是采用tomcat的方式,以后再写相关前后台分离的方式)

    代码(采用的是Kaptcha):

导入的依赖:

pom.xml文件中:
<!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha验证码工具 -->
<dependency>
    <groupId>com.github.penggle</groupId>
    <artifactId>kaptcha</artifactId>
    <version>2.3.2</version>
</dependency>

web.xml中配置:

<!--生成验证码的servlet-->
<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.textproducer.font.color</param-name>
        <param-value>red</param-value>
    </init-param>
    <!--图片宽度-->
    <init-param>
        <param-name>kaptcha.image.width</param-name>
        <param-value>120</param-value>
    </init-param>   
    <!--图片高度-->
    <init-param>
        <param-name>kaptcha.image.height</param-name>
        <param-value>40</param-value>
    </init-param>
    <!--使用哪些字符生成验证码-->
    <init-param>
        <param-name>kaptcha.textproducer.char.string</param-name>
        <param-value>ACDBeKPRSTWx3456789</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.testproducer.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>

2.然后就是在页面中引用了(重要的就是src="../Kaptcha"):

<li>
    <div class="item-content">
        <div class="item-inner">
            <div class="item-title label">验证码</div>
            <input id="j_kaptcha" type="text" placeholder="输入验证码" maxlength="4">
            <div class="item-input">
                <img id="kaptcha_img" alt="更换" title="点击更换验证码" 
                     onclick="changeVerifyCode(this)" src="../Kaptcha">
            </div>
        </div>
    </div>
</li>

3.后台的校验方法:

public static boolean checkVerify(HttpServletRquest request){

    //获取生成的验证码

    String verifyCodeReally=(String)request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);

 //获取用户输入的验证码

String verifyCodeInput=HttpServletRequest.getString(request,"verifyCodeInput");

if(verifyCodeInput==null||!verifyCodeReally.toLowerCase().equals(verifyCodeInut.toLowerCase())){

    return false;

}

return true;

}

其中HttpServletRequest.getString方法为:

 public getString(HttpServletRequest request,String key){

    String result=request.getParamter(key);

if(result!=null){

    return reslut.trim();

}

if("".equals(result)){

    return null;

}

return result;

}

 

阅读更多

没有更多推荐了,返回首页