校驗用戶名是否存在這種案例其實在我們日常生活中其實有很多,如申請賬號時,填寫用戶名時,會出現"此用戶名太受歡迎,請更換一個"的詞條,也會出現"此用戶名可用",如圖1所示
圖1
過程實際上是文本輸入框失去焦點發送ajax異步請求,查詢數據庫是否存在該用戶名如果存在,則提示信息,此用戶名太受歡迎,請更換一個,如果不存在,則提示信息,可用。以bd為例,當輸入用戶名為"super",輸入框失去焦點時,發送請求,把我填寫的請求參數"super"傳給了服務器端,響應會的結果為Json的數據,並且里面的鍵“userExsit”的值為1,說明該用戶存在,提示更換一個名字,如圖2所示;當隨便輸入時,則里面的鍵“userExsit”的值為0,說明用戶不存在,該名字可用,如圖3所示。接下來完成所上需求
圖2
圖3
首先前端頁面為:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注冊頁面</title> <script src="js/jquery-3.3.1.min.js"></script> <script> $(function () { //給username綁定blur事件 $("#username").blur(function () { //獲取username文本輸入框的值 var username = $(this).val(); //發送ajax請求 //期望服務器響應回的數據格式{"userExsit":true,"msg":"此用戶名太受歡迎,請更換一個"} // {"userExsit":false,"msg":"用戶名可用"} $.get("findUserServlet",{username:username},function (data) { // alert(data); var span=$("#s_username"); if (data.userExsit){ //用戶名存在 span.css("color","red"); span.html(data.msg); }else{ //用戶名不存在 span.css("color","green"); span.html(data.msg); } //將文件格式設為json格式 },"json"); }); }); </script> </head> <body> <form> <input type="text" id="username" name="username" placeholder="請輸入用戶名"> <span id="s_username"></span> <br> <input type="password" name="password" placeholder="請輸入密碼"><br> <input type="submit" value="注冊"> </form> </body> </html>
然后為findUserServlet文件,實際需要連接數據庫,查詢數據庫進行判斷,在這個例子中就簡單比較了,省略了連接數據庫的操作,直接與字符串比較
package cn.stormtides.web.servlet; import com.fasterxml.jackson.databind.ObjectMapper; 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.util.HashMap; import java.util.Map; @WebServlet("/findUserServlet") public class FindUserServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); //期望服務器響應回的數據格式{"userExsit":true,"msg":"此用戶名太受歡迎,請更換一個"} // {"userExsit":false,"msg":"用戶名可用"} response.setContentType("text/html;charset=utf-8"); Map<String,Object> map=new HashMap<String,Object>(); if ("tom".equals(username)){ map.put("userExsit",true); map.put("msg","此用戶名太受歡迎,請更換一個"); }else { map.put("userExsit",false); map.put("msg","用戶名可用"); } //將map轉回json,轉回客戶端 ObjectMapper mapper=new ObjectMapper(); mapper.writeValue(response.getWriter(),map); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }