前台JS代码
/*异步验证用户名的输入格式以及是否存在*/
function
CheckUsername(){
/*取到用户名输入框*/
var
nametxt = document.getElementById(
"username"
);
/*获取输入的用户名值*/
var
username = nametxt.value;
/*获取到装错误信息的span框*/
var
sp = document.getElementById(
"usernameError"
);
var
regex =
/^[a-z0-9]{4,12}$/i
;
/*创建异步函数*/
var
xhr = createXmlHttp();
/*设置监听*/
xhr.onreadystatechange =
function
()
{
if
(xhr.readyState == 4){
if
(xhr.status == 200){
/*为信息提示框赋文本*/
sp.innerHTML = xhr.responseText;
/*为信息提示框赋样式*/
sp.className =
"infoError"
;
}
}
}
/*打开链接 · 不加时间戳则会引起浏览器的缓存*/
xhr.open(
"GET"
,
"${pageContext.request.contextPath}/user_FindByName.action?time="
+
new
Date().getTime()+
"&username="
+username,
true
);
/*发送*/
xhr.send();
}
function
createXmlHttp(){
var
xmlHttp;
try
{
//Firefox, Opera8.0+, Safari
xmlHttp =
new
XMLHttpRequest();
}
catch
(e){
try
{
//IE
xmlHttp =
new
ActiveXObject(
"Msxm12.XMLHTTP"
);
}
catch
(e) {}
}
return
xmlHttp;
}
后台action代码
/**
* AJAX异步校验用户名
* @return String
* @throws IOException
*/
public
String
FindByName
()
throws
IOException
{
/*调用service进行查询*/
User
existUser
=
userService
.
FindByUsername
(
user
.
getUsername
())
;
/*获取response对象,向页面输出信息*/
HttpServletResponse
response
=
ServletActionContext
.
getResponse
()
;
response
.
setContentType
(
"text/html;charset=UTF-8"
)
;
/*判断是否为空*/
if
(
existUser
!=
null
){
//用户名已经存在,不能注册
/*有异常则向上抛出*/
response
.
getWriter
()
.
println
(
"<font color='red'>用户名已存在,不可用!</font>"
)
;
}
else
{
//用户名不存在,可以注册
response
.
getWriter
()
.
println
(
"<font color='green'>用户名可以使用!</font>"
)
;
}
/*AJAX操作,不需要页面跳转*/
return
NONE
;
}