在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" οnblur="checkItemNo(this)" οnclick="document.getElementById('itemNoSpan').innerHTML=''; ">
<span id="itemNoSpan"></span>
</td>
以上的代码可以达到的效果是,当用户鼠标脱离输入框时,如果输入框中有内容,ajax就会进行数据库的查询,验证数据库中是否存在这个记录,显示对应的提示信息。