基于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("该用户名可以使用");

			}

			

		}


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

效果如上所示;


 

 

你可能感兴趣的:(servlet)