检验用户名是否唯一(Ajax与服务器的通信)
一.创建一个jsp文件,并在此文件中添加一个收集用户信息的注册信息表
代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
<link href="标记样式.css">
</head>
<body>
<div id="div1">
<form method="post" action="index.jsp">
<table>
<tr>
<td>用户名:</td><td><input type="text" name="username" id="username"></td>
</tr>
<tr>
<td>密码:</td><td><input type="password" name="psw1" id="psw1"></td>
</tr>
<tr>
<td>确认密码:</td><td><input type="password" name="psw2" id="psw2"></td>
</tr>
<tr>
<td>邮箱:</td><td><input type="text" name="mail" id="mail"></td>
</tr>
<th>
<input type="submit">
</th>
</table>
</form>
</div>
</body>
</html>
所创建表单如下:该表单非常简陋,后期也可以适当优化
二.在页面合适位置添加一个用于显示提示信息的<div>标记,并通过css控制该标记的样式
css代码:
#div1{
width: 400px;
height: 200px;
padding: 50px;
margin: auto;
margin-top: 15%;
}
#div2{
position: absolute;
left: 331px;
top: 39px;
width: 98px;
height: 48px;
padding-top: 45px;
padding-left: 25px;
padding-right: 25px;
z-index: 1;
display: none; /*设置默认不显示*/
color: red;
}
三.编写一个JS函数,在此函数中初始化XMLHttpRequest对象,并与服务器链接
代码如下:
<script>
function fun(url) {
http_request=false;//设置为非IE浏览器
if (window.XMLHttpRequest){
http_request=new XMLHttpRequest();//创建XMLHttpPequest对象实例
}else if(window.ActiveXObject){//设置为IE浏览器
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");//创建XMLHttpPequest对象实例
}catch (e) {
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP")
}catch(e){}
}
}
if(http_request){
alert("不能创建XMLHttpPequest对象实例");//弹窗提示
return false;
}
http_request.onreadystatechange = getResult;//回调函数,还未编写,下一步即将编写
http_request.open('GET',url,true);
http_request.send(null);
}
</script>
四.编写回调函数getResult
function getResult() {
if (http_request.readyState ==4){//判断请求状态
if (http_request.status == 200){//请求成功后返回
document.getElementById("div2").innerHTML=http_request.responseText;//设置提示内容
document.getElementById("div2").style.display="block";//显示提示内容
}else{
alert("请求的页面异常!!!");
}
}
}
五.编写用户检测方法CheckUser()
function CheckUser(username) {
if (username.value==null){
alert("请输入用户名");
username.focus();
return;
}else{
fun('checkuser.jsp?user='+username.value);
}
}
六.编写检测用户名是否被注册的处理页面checkUser.jsp
在该页面中判断输入的用户名是否注册,并应用JSP内置对象out中的println()方法输出结果,代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>
<%
String[] userList={"用户一","user1","wtf"};
String user = new String(request.getParameter("user").getBytes("ISO-8859-1"),"utf-8");//获取用户名
Arrays.sort(userList);
int result = Arrays.binarySearch(userList,user);
if ( result>-1 ){
out.println("该用户名已被使用");
}else{
out.println("恭喜您注册成功");
}
%>