基于JSP+SERVLET的新闻发布系统(二)

接下来讲解的是通过AJAX验证用户名是否已经添加

				用户名:
				<input type="text" name="userName" id="userName"
					onblur="validateName()" />


当输入完信息,移开光标时,则会调用validateName()这个JS函数。

该函数如下:

	<script type="text/javascript">
	var request = false;
	function validateName(){
		var userName=document.getElementById("userName").value;
		var serverPath = document.getElementById("path").value;
		var url = serverPath+"/user";//服务器地址
			//请求参数
		var parameter = "method=queryUser&userName="+userName;
		request = httpRequest("post",url,true,callbackFunc,parameter);
	}

	function callbackFunc() {
		if (request.readyState == 4) {
			if (request.status == 200) {
					document.getElementById("spanUser").innerHTML = "<font color='red'>" + request.responseText + "</font>";
			}
		}
	}
</script>


中间使用的是两个工具类,如下所示

/**
 * 构建XMLHttpRequest对象并请求服务器
 * @param reqType:请求类型(GET或POST)
 * @param url:服务器地址
 * @param async:是否异步请求
 * @param resFun:响应的回调函数
 * @param parameter :请求参数
 * @return
 */

function httpRequest(reqType,url,async,resFun,parameter){
	var request = null;
	if(window.XMLHttpRequest){			//非IE浏览器
		request = new XMLHttpRequest();
	}else if(window.ActiveXObject){		//IE浏览器  
		request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	request.open(reqType, url, true);	//打开服务器连接
	//设置请求头
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.onreadystatechange = resFun;//设置处理响应的回调函数
	parameter = encodeURI(parameter);	//将参数字符串进行编码
	request.send(parameter);			//发送请求
	
	return request;
}


假如验证失败,则会把失败信息写在改属性下面:

document.getElementById("spanUser").innerHTML = "<font color='red'>" + request.responseText + "</font>"


同时需注意的是,在后台接受验证参数时,SERVLET需响应

		response.setContentType( "text/xml;charset=UTF-8" );//设置响应格式
		//设置响应头信息
		response.addHeader( "Cache-Control", "no-store,no-cache,must-revalidate" );
		response.addHeader( "Cache-Control", "post-check=0,pre-check=0" );
		response.addHeader( "Expires", "0" );
		response.addHeader( "Pragma", "no-cache" );


同时验证代码如下:

		//验证用户名是否存在
		if("queryUser".equals(method)){
			String userName =  request.getParameter("userName");
			user.setUserName(userName);
			user = userService.checkUser(user);
			if(user.getUserName()!=null){
				out.println("用户名已经存在");  
			}else{
				out.println("该用户名可以使用");
			}
			
		}


效果如上所示;


 

原文地址:https://www.cnblogs.com/dyllove98/p/3144768.html