校驗用戶名是否存在這種案例其實在我們日常生活中其實有很多,如申請賬號時,填寫用戶名時,會出現"此用戶名太受歡迎,請更換一個"的詞條,也會出現"此用戶名可用",如圖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);
}
}
