步骤(主要使用了ajax)
1.导入别人写好的验证码类
2.在jsp页面实现写好的验证码
3.在servlet中验证输入的验证码与生成的验证码是否一样
4.如果验证成功放行
实现
1.jsp页面(显示验证码的页面)<script> /* 自定义校验规则,用于判断验证码是否正确(一定要放在jsp页面,原因未知) */ $.validator.addMethod( //规则的名称 "check_checkCode", //校验的函数 function(value,element,params){ var flag = false; $.ajax({ "async":false,//是否异步(false为不异步)(如果异步的话,这里运行不到就会有返回值出去) "url":"${pageContext.request.contextPath}/checkCheckCode",//需要访问的地址 "data":{"checkCode":value},//发送的数据(发送给服务器)(这个值是我们所写的用户名) "type":"POST",//提交方式 "dataType":"json",//指定返回的数据类型 "success":function(data){//成功会运行这个函数(回调函数) flag = data.isEqual; } }); //返回false代表该校验器不通过 return flag; } ); </script> <body> <img src="${pageContext.request.contextPath }/checkImg" alt="点击刷新" οnclick="this.src='${pageContext.request.contextPath }/checkImg?s='+new Date().getTime()" /><!--后面附加的‘s’只是为验证码能够点击切换--> </body>
2.servlet.java页面: checkCheckCode.java(处理验证码)//比较验证码(验证码区分大小写) String checkCode_client = request.getParameter("checkCode");//输入的验证码 String checkCode_session = (String)request.getSession().getAttribute("code");//生成图片的验证码 boolean isEqual = false; if(checkCode_session.equals(checkCode_client)){ isEqual = true; } String json = "{\"isEqual\":"+isEqual+"}";//把他变成JSON类型的值并返回 //System.out.println("1111111111111111111"); response.getWriter().write(json);
3.js代码(这部分代码是ajax异步查询中对应验证码的代码)$(function(){ $("#CheckForm").validate({ rules:{ "checkCode":{ "required":true, "check_checkCode":true, //equalTo:"[name='checkCode2']" }, }, messages:{ "checkCode":{ "required":"验证码不能为空!", "check_checkCode":"验证码输入错误", }, }, }); });
5.图示
(只要输入正确这个错误提示会自动消失,分辨大小写)
6.验证码类(百度过来的)
别人的劳动成果我就不贴了
7.需要使用的插件
gson-2.2.4.jar:用于JSON的转换插件(google公司开发的)//好像没使用