Kaptcha是一个非常实用的验证码生成工具,可以通过配置生成多样化的验证码。以图片的形式显示,从而无法进行复制粘贴。
引入相关jar包
在Servelt中配置kaptcha的Servlet
<!-- kaptcha验证码配置 --> <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>black</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.char.space</param-name> <param-value>5</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>kaptcha</servlet-name> <url-pattern>/kaptcha.jpg</url-pattern> </servlet-mapping>
kaptcha.border:是否显示边框。
kaptcha.textproducer.font.color:字体颜色
kaptcha.textproducer.char.space:字符间距
更多的属性设置可以在com.google.code.kaptcha.Constants类中找到。其中包括:
kaptcha.border.color:边框颜色
kaptcha.border.thickness:边框宽度
kaptcha.textproducer.char.length:产生字符的长度
kaptcha.textproducer.font.size:产生字符的大小
kaptcha.image.width:产生图片的宽度
kaptcha.image.height:产生图片的高度,等
编写一个显示验证码的页面,index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <script type="text/javascript" src="statics/js/jquery-1.8.3.min.js"></script> <script type="text/javascript"> //验证码刷新功能 function refreshCaptcha() { //Math.floor();向下取整 //jQuery效果,fadeIn() 方法使用淡入效果来显示被选元素,假如该元素是隐藏的。 $('#vcode').hide().attr( 'src', 'kaptcha.jpg?'+ Math.floor(Math.random() * 100)).fadeIn(); } </script> <body> <form action="kaptcha" method="post"> <input type="text" name="kaptchaValidate"> <img onclick="refreshCaptcha()" id="vcode" style="vertical-align: middle;" title="点击更换" alt="验证图片" src="kaptcha.jpg" height="40" width="85"> <input type="submit" value="提交"> </form> </body> </html>
编写一个验证的Servelt以及web.xml的配置
package cn.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.code.kaptcha.Constants; public class KaptchaServlet extends HttpServlet { private static final long serialVersionUID = -7642000788132875193L; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String validate = req.getParameter("kaptchaValidate"); String validateCode = (String) req.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); if(validate==null || validateCode == null){ resp.sendRedirect("fail.html"); }else if(!validateCode.equals(validate)){ resp.sendRedirect("fail.html"); }else{ resp.sendRedirect("success.html"); } } }
<servlet> <servlet-name>validatServlet</servlet-name> <servlet-class>cn.servlet.KaptchaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>validatServlet</servlet-name> <url-pattern>/kaptcha</url-pattern> </servlet-mapping>