日期:2014-05-16 浏览次数:20451 次
在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就会进行数据库的查询,验证数据库中是否存在这个记录,显示对应的提示信息。