日期:2014-05-16  浏览次数:20454 次

使用servlet结合ajax验证数据库中是否存在某条记录

在web页面中添加信息的时候,如果不进行数据库的主键id的验证的话,可能会出现添加异常。所以在添加之前先到数据库中进行验证,避免带来不必要的麻烦,给客户更好的操作体验。

下面就开看一个使用servlet结合ajax进行验证的例子:

首先看看servlet中进行查询数据库的Java代码:ItemValidat.java

package org.ml.drp.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.ml.drp.basedata.manager.ItemFactory;

public class ItemValidate extends HttpServlet {
 
	private static final long serialVersionUID = 1L;
 
	public ItemValidate() {
		super();
	}
 
	public void destroy() {
		super.destroy();  
	}
 
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException { 
		this.doPost(request, response);
	}
 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String itemNo = request.getParameter("itemNo");//取得物料代码
		if(ItemFactory.getInstance().getItemManager().findItemById(itemNo)!=null){ //查询数据库
			response.getWriter().print("<font color=\"red\">代码已存在</font>");
		}else{
			response.getWriter().print("<font color=\"green\">OK!</font>");
		}
	}
 
	public void init() throws ServletException { 
	}
}
配置servlet的代码:web.xml
   <servlet> 
    <servlet-name>ItemValidate</servlet-name>
    <servlet-class>org.ml.drp.servlet.ItemValidate</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ItemValidate</servlet-name>
    <url-pattern>/item_validate</url-pattern>
  </servlet-mapping>
页面中的ajax验证代码:
         <script type="text/javascript">
		var xmlHttp 
		function createXMLHttpRequest(){
			if(window.XMLHttpRequest){
				xmlHttp = new XMLHttpRequest();
			}else if(window.ActiveXObject){ 
				xmlHttp = new window.ActiveXObject("Microsoft.XMLHTTP");
			}
		}
		function checkItemNo(itemNo){
			if(trim(itemNo.value)!=""){
				createXMLHttpRequest();//创建Ajax核心对象XMLHttpRequest
				var url = "../item_validate?itemNo="+trim(itemNo.value) + "&time="+new Date().getTime();
				//设置请求方式为get,设置 url请求,设置为异步提交 
				xmlHttp.open("get",url,true);
				//将方法地址赋值给属性 
				xmlHttp.onreadystatechange=function(){//使用匿名对象进行 
					if(xmlHttp.readyState==4){//响应完成 
						if(xmlHttp.status==200){//请求成功 
							var itemNoSpan = document.getElementById("itemNoSpan"); 
							itemNoSpan.innerHTML=xmlHttp.responseText;
						}else{
							alert("物料代码验证请求失败,请联系管理员")   
						}
					}
				};
				//将设置的信息发送给Ajax引擎 
				xmlHttp.send(null); 
			}else{ 
				document.getElementById("itemNoSpan").innerHTML="<font color='red'>物料代码不能为空</font>"; 
			} 
		}  
	</script>
对应的需要验证的标签代码:
	<td>
	     <input name="itemNo" type="text" class="text1" id="itemNo" size="10" maxlength="10" onblur="checkItemNo(this)" onclick="document.getElementById('itemNoSpan').innerHTML=''; ">
	     <span id="itemNoSpan"></span>
        </td>
以上的代码可以达到的效果是,当用户鼠标脱离输入框时,如果输入框中有内容,ajax就会进行数据库的查询,验证数据库中是否存在这个记录,显示对应的提示信息。