1. 程式人生 > 其它 >JavaWeb22.4【Ajax&Json:註冊案例-校驗使用者名稱是否已存在】

JavaWeb22.4【Ajax&Json:註冊案例-校驗使用者名稱是否已存在】

客戶端

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>使用者註冊</title>
 6     <script src="js/jquery-3.3.1.min.js"></script>
 7     <script>
 8         $(function () {
 9             //給username輸入框繫結失去焦點事件
10             $(
"#username").blur(function () { 11 //獲取username文字輸入框的值 12 var username = $(this).val(); 13 //傳送ajax非同步請求 14 $.get( 15 "findUserServlet", 16 {username:username}, 17 function (data) {
18 /* alert(data); 19 //未設定"json"時:{"userExsit":"false","msg":"?????"} 20 //設定"json"後:[object Object]*/ 21 22 /* 23 期望伺服器響應回的資料格式: 24 {"userExsit":true,"msg":"此使用者名稱太受歡迎,請更換一個"}
25 {"userExsit":false,"msg":"使用者名稱可用"} 26 */ 27 28 var span = $("#s_username"); 29 //判斷userExsit 30 if (data.userExsit){ 31 //使用者名稱存在 32 span.css("color", "red"); 33 span.html(data.msg); 34 } else { 35 //使用者名稱不存在 36 span.css("color", "green"); 37 span.html(data.msg); 38 } 39 }, 40 "json" //指定接收的型別為json,不然預設為text字串 41 ); 42 }); 43 }); 44 </script> 45 </head> 46 <body> 47 <form> 48 <input type="text" name="username" placeholder="請輸入使用者名稱" id="username"> 49 <span id="s_username"></span><br> 50 <input type="password" name="password" placeholder="請輸入密碼"><br> 51 <input type="submit" value="註冊"> 52 </form> 53 </body> 54 </html>

伺服器端

 1 package com.haifei.web.servlet;
 2 
 3 import com.fasterxml.jackson.databind.ObjectMapper;
 4 
 5 import javax.servlet.ServletException;
 6 import javax.servlet.annotation.WebServlet;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 import java.io.IOException;
11 import java.util.HashMap;
12 import java.util.Map;
13 
14 @WebServlet("/findUserServlet")
15 public class FindUserServlet extends HttpServlet {
16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17         //從頁面獲取使用者輸入的使用者名稱
18         String username = request.getParameter("username");
19 //        System.out.println(username);
20 
21         //設定響應的資料格式為json,防止msg中的中文亂碼
22         response.setContentType("application/json;charset=utf-8");
23 
24         //實際應呼叫service層判斷使用者名稱是否存在;此處簡化一下只作為演示
25         Map<String, Object> map = new HashMap<>();
26         if ("tom".equals(username)){
27             //已存在
28             map.put("userExsit", "true");
29             map.put("msg", "此使用者名稱太受歡迎,請更換一個");
30         }else {
31             //不存在
32             map.put("userExsit", "false");
33             map.put("msg", "使用者名稱可用");
34         }
35 
36         //將map轉為json,並傳遞到客戶端(瀏覽器頁面)
37         ObjectMapper mapper = new ObjectMapper();
38         mapper.writeValue(response.getWriter(), map);
39     }
40 
41     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
42         this.doPost(request, response);
43     }
44 }

效果