首先要把dwr的jar包导入到工程里面 然后配置dwr配置文件 内容如下 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <allow> <create creator="new" javascript="validator"> <param name="class" value="org.apache.struts2.validators.DWRValidator"/> </create> <convert converter="bean" match="com.opensymphony.xwork2.ValidationAwareSupport"/> </allow> <signatures> <!--[CDATA[ import java.util.Map; import org.apache.struts2.validators.DWRValidator; DWRValidator.doPost(String, String, Map<String, String>); ]]--> </signatures> </dwr> 然后在web.xml里面配置如下代码: <servlet> <servlet-name>dwr</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> 写一个公用的ajax.js,代码如下: var xmlHttp; function GetMSXmlHttp() { var clsids = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP.2.6","Microsoft.XMLHTTP.1.0", "Microsoft.XMLHTTP.1","Microsoft.XMLHTTP"]; /**var clsids=['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', "Msxml2.XMLHTTP.2.6","Microsoft.XMLHTTP.1.0","Microsoft.XMLHTTP.1","Microsoft.XMLHTTP"];**/ for(var i=0; (i<clsids.length) && xmlHttp == null; i++) { xmlHttp = CreateXmlHttp(clsids[i]); } return xmlHttp; } function CreateXmlHttp(clsid) { try { xmlHttp = new ActiveXObject(clsid); lastclsid = clsid; return xmlHttp; } catch(e) {} } function GetXmlHttpObject() { var objXmlHttp = null; if(window.ActiveXObject){ objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else if(window.ActiveXObject){ objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0"); }else if(window.ActiveXObject){ objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }else if(window.XMLHttpRequest){ objXmlHttp = new XMLHttpRequest(); }else { objXmlHttp = GetMSXmlHttp(); } /**if (window.XMLHttpRequest) { objXmlHttp = new XMLHttpRequest(); } else { objXmlHttp = GetMSXmlHttp(); }**/ return objXmlHttp; } function loadXMLDoc(url,methods) { req=GetXmlHttpObject(); if(req) { req.onreadystatechange = methods; req.open('POST', url, false); req.send(''); } } 在调用的时候如下: var regu = "^[ ]+$"; var re = new RegExp(regu); function check_ranknum(){ var exp =/^([0-9]+)(/.[0-9]{1,2})?$/; var reg=new RegExp(exp); var ranknum = document.getElementById("ranknum").value; if(ranknum!=""&®.test(ranknum)&&!re.test(ranknum)){ loadXMLDoc("/link!checkranknum.ph?ranknum="+ranknum,checkReturn); return checkReturn(); }else{ if(ranknum==""||re.test(ranknum)){ document.getElementById("ranknum_div").innerHTML="<font color=red>顺序不能为空,请输入顺序!</font>"; }else{ if(!reg.test(ranknum)){ document.getElementById("ranknum_div").innerHTML="<font color=red>顺序只能为数字,请输入正确的顺序!</font>"; } } return false; } } function checkReturn(){ if(req.readyState==4){ if(req.status==200){ /*Ajax请求完成*/ var result = req.responseText; if(result==1){ document.getElementById("ranknum_div").innerHTML="<font color='red'>该序号已经存在,请输入其他序号</font>"; return false; }else{ document.getElementById("ranknum_div").innerHTML=""; return true; } } } } //验证表单提交 function check_submit(){ if(check_ranknum()){ return true; }else{ return false; } } java代码返回数据: public class LinkAction extends PublicAction { /** * 检查顺序号是否存在 * @return * @author: */ public String checkranknum(){ String ranknum=request.getParameter("ranknum"); Link checklink=linkBus.checkranknum(new Long(ranknum)); try { ServletActionContext.getResponse().setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); if(checklink==null){ out.println(0); }else{ out.println(1); } out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } } jsp页面: <form action="/link!save.ph" οnsubmit="return check_submit()" method="post" enctype="multipart/form-data"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#FFFFFF" align="right">顺序:</td> <td height="20" bgcolor="#FFFFFF"> <input type="text" id="ranknum" maxlength="50" size="35" value="${link.ranknum}" name="link.ranknum" οnblur="return check_ranknum()"/> <div id="ranknum_div" style="position: absolute;padding-top:8px;" mce_style="position: absolute;padding-top:8px;"></div> </td> </tr> <tr> <td height="40" bgcolor="#FFFFFF" colspan="2" style="padding-left:200px" mce_style="padding-left:200px"> <input type="button" value="返回列表" οnclick="javascript:history.back();"/> <input type="reset" value="重 置"/> <input type="submit" value="提 交"/> </td> </tr> </table> </form>