1. register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function validateName(){
//提示用户名可不可用
var sp = document.getElementById("sp");
//获取页面输入的用户名
var name = document.getElementById("uname").value;
//1.创建AJAX对象
var xhr = new XMLHttpRequest();
//2.新建请求 (请求方式 请求地址 是否同步)
xhr.open("post", "UserServlet.do", true);
//3.请求头
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//4.请求体
xhr.send("method=validateName&uname="+name);
//5.前后台交互验证
xhr.onreadystatechange = function(){
//正常交互
if(xhr.status==200 && xhr.readyState==4){
//6.得到返回结果,并利用结果判断用户名是否可用
var result = xhr.responseText;
//返回true,可用
if("true"==result){
//判用户名是否为空
if(name==null||name==""){
sp.style.color = "red";
sp.innerHTML = "用户名不可为空";
}else{
sp.style.color = "green";
sp.innerHTML = "用户名可用";
}
}else{ //返回false,用户名不可用
sp.style.color = "red";
sp.innerHTML = "用户名不可用";
}
}
};
}
</script>
</head>
<body>
用户名:<input type="text" name="username" id="uname" οnblur="validateName()"><span id="sp"></span><br/>
头像:<input type="file"><br>
<button type="submit">注册</button>
</body>
</html>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function validateName(){
//提示用户名可不可用
var sp = document.getElementById("sp");
//获取页面输入的用户名
var name = document.getElementById("uname").value;
//1.创建AJAX对象
var xhr = new XMLHttpRequest();
//2.新建请求 (请求方式 请求地址 是否同步)
xhr.open("post", "UserServlet.do", true);
//3.请求头
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//4.请求体
xhr.send("method=validateName&uname="+name);
//5.前后台交互验证
xhr.onreadystatechange = function(){
//正常交互
if(xhr.status==200 && xhr.readyState==4){
//6.得到返回结果,并利用结果判断用户名是否可用
var result = xhr.responseText;
//返回true,可用
if("true"==result){
//判用户名是否为空
if(name==null||name==""){
sp.style.color = "red";
sp.innerHTML = "用户名不可为空";
}else{
sp.style.color = "green";
sp.innerHTML = "用户名可用";
}
}else{ //返回false,用户名不可用
sp.style.color = "red";
sp.innerHTML = "用户名不可用";
}
}
};
}
</script>
</head>
<body>
用户名:<input type="text" name="username" id="uname" οnblur="validateName()"><span id="sp"></span><br/>
头像:<input type="file"><br>
<button type="submit">注册</button>
</body>
</html>
2. UserServlet
public class UserServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//调用哪个方法
String method = request.getParameter("method");
if("validateName".equals(method))
validateName(request,response);
}
//验证用户名
private void validateName(HttpServletRequest request,
HttpServletResponse response) throws IOException {
//用于向后台传数据
PrintWriter out = response.getWriter();
//一般要通过和数据库交互查看用户名是否可用,这里就直接给个zhangsan测试
String name = request.getParameter("uname");
//如果是zhangsan,数据库已经有了,重复不可用,返回false
if("zhangsan".equals(name))
out.write("false");
else
out.write("true");
}
}
private void validateName(HttpServletRequest request,
HttpServletResponse response) throws IOException {
//用于向后台传数据
PrintWriter out = response.getWriter();
//一般要通过和数据库交互查看用户名是否可用,这里就直接给个zhangsan测试
String name = request.getParameter("uname");
//如果是zhangsan,数据库已经有了,重复不可用,返回false
if("zhangsan".equals(name))
out.write("false");
else
out.write("true");
}
}
3. 结果
![](https://i-blog.csdnimg.cn/blog_migrate/15ebbae0ab4880ea40b10a9e122b5acd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/edf1a6edcdbaf2e3464e5210e3bf04df.png)
![](https://i-blog.csdnimg.cn/blog_migrate/449c1a785d9ad697c04e3a762466bbd5.png)