对于验证码检查咱们并不会陌生,咱们在学习Session的时候已经使用过了验证码检查了。详细可参考:http://blog.csdn.net/hon_3y/article/details/54799494#t11javascript
咱们当时是同步检查验证码是否正确的,其实没有必要。由于就验证一个输入框的数据,不必使用同步的方式验证【使用异步对用户体验更加友好】html
当用户输入完4位数字的时候,就去服务器端验证是否须要相同,若是相同,那么返回一个打钩的图片。若是不一样,那么就返回一个打叉的图片java
值得注意的是:要获取td定义的id,外边必定要套上table标签。。。我在刚开始写的时候,是没有table标签的。而后死活得不到td的标签….很烦…ajax
<%-- Created by IntelliJ IDEA. User: ozc Date: 2017/5/17 Time: 20:52 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>验证码校验</title> <script type="text/javascript" src="js/ajax.js"></script> </head> <body> <%--###################展现页面#############################--%> <table> <tr> <td>验证码:</td> <td><input type="text" id="checkCode" name="checkCode"></td> <td><img src="01_image.jsp"/></td> <td id="result"></td> </tr> </table> <%--###################去除空格方法#############################--%> <script type="text/javascript"> function trim(str) { //去除左边的空格 str.replace("/^\s*/", ""); //去除右边的空格 str.replace("/\s*$/", ""); return str; } </script> <%--###################绑定键盘事件#############################--%> <script type="text/javascript"> document.getElementById("checkCode").onkeyup = function () { //获得输入框的内容,把的先后空格都去除 var keyValue = this.value; keyValue = trim(keyValue); /*******************ajax代码*******************************/ if (keyValue.length == 4) { var ajax = createAJAX(); var method = "post"; var url = "${pageContext.request.contextPath}/CheckCodeServlet?time=" + new Date().getTime(); ajax.open(method, url); ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded"); ajax.send("keyValue=" + keyValue); /*******************ajax回调函数*******************************/ ajax.onreadystatechange = function () { if (ajax.readyState == 4) { if (ajax.status == 200) { //获得服务器带过来的数据 var tip = ajax.responseText; /*******************使用DOM把数据添加到页面上*******************************/ var img = document.createElement("img"); img.src = tip; img.style.width = "14px"; img.style.height = "14px"; var td = document.getElementById("result"); td.innerHTML = ""; td.appendChild(img); } } }; }else { //清空图片 var td = document.getElementById("result"); td.innerHTML = ""; } }; </script> </body> </html>
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * Created by ozc on 2017/5/17. */ @WebServlet(name = "CheckCodeServlet",urlPatterns = "/CheckCodeServlet") public class CheckCodeServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得带过来的数据 String keyValue = request.getParameter("keyValue"); //获得Session中的数据 String checkCodeInSession = (String) request.getSession().getAttribute("CHECKNUM"); response.setContentType("text/html;charset=UTF-8"); String src = "images/MsgError.gif"; //判断俩数据是否相同 if (keyValue.equals(checkCodeInSession)) { src = "images/MsgSent.gif"; } PrintWriter writer = response.getWriter(); writer.write(src); writer.flush(); writer.close(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }