一般在网站的注册页面中肯定会有验证码的部分(在购物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="点击更换验证码" οnclick="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;
}