谷歌验证码的使用
谷歌验证码kaptcha的使用
1.在模块中添加kaptch-2.3.2.jar包
2.到web.xml中配置kaptcha的servlet
<servlet>
<servlet-name>KaptchaServlet</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>KaptchaServlet</servlet-name>
<url-pattern>/kaptcha.jpg</url-pattern>
</servlet-mapping>
3.直接访问配置好的kaptchaServlet
PS:每刷新一次更新一次!
4.在页面的img标签中添加配置好的kaptcha的servlet
<form action="http://localhost:8080/VerificationCode/registServlet" method="get" >
username:<input type="text" name="username"/><br/>
code:<input type="text" name="code" style="width: 50px"/>
<img src="http://localhost:8080/VerificationCode/kaptcha.jpg" style="width: 100px;height: 28px"><br/>
<input type="submit" name="submit">
</form>
5.在页面的servlet 中写好逻辑代码
public class RegistServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获得Session中的验证码
String token = (String) req.getSession().getAttribute(KAPTCHA_SESSION_KEY);
//删除Session中的验证码
req.getSession().removeAttribute(KAPTCHA_SESSION_KEY);
//得到页面的code
String code = req.getParameter("code");
String username = req.getParameter("username");
//判断
if (token!=null&&token.equalsIgnoreCase(code)){
System.out.println("保存到数据库"+username);
resp.sendRedirect(req.getContextPath()+"/ok.jsp");
}else {
System.out.println("请不要重复提交表单");
}
6.成功界面
学习了验证码之后材质到验证码的主要作用就是为了防止页面的重复提交,通过Session获得kaptcha生成的KAPTCHA_SESSION_KEY,然后删除KAPTCHA_SESSION_KEY。
(防止返回时还是原来的KAPTCHA_SESSION_KEY)和页面得到的code进行比较,成功则重定向,不成功则返回进行重新输入。