用Ajax实现的验证用户名是否重复实例

本文介绍了一个用户添加页面的具体实现细节,包括使用Struts框架进行页面布局、通过DWR调用后台服务获取省份和城市列表、利用XMLHttpRequest对象检查用户名是否已存在等功能。此外,还展示了如何设置日期选择器及表单提交等操作。
  1. <%@pagecontentType="text/html;charset=UTF-8"%>
  2. <%@taglibprefix="s"uri="/struts-tags"%>
  3. <html>
  4. <head>
  5. <title>用户添加页面</title>
  6. <scripttype="text/javascript"src="${path}/common/plugins/datepicker/WdatePicker.js"></script>
  7. <scripttype="text/javascript"src="${path}/dwr/interface/place.js"></script>
  8. <scripttype="text/javascript"src="${path}/dwr/engine.js"></script>
  9. <scripttype="text/javascript"src="${path}/dwr/util.js"></script>
  10. <script>
  11. functiongetCity(){
  12. varobj_pro=document.getElementById("province");
  13. varobj_City=document.getElementById("city");
  14. varpro_index=obj_pro.selectedIndex;
  15. varpro_value=obj_pro.options[pro_index].value;
  16. if(pro_value!=""&&pro_value!=null){
  17. place.getCityList(pro_value,cityReturn);
  18. }else{
  19. DWRUtil.removeAllOptions(obj_City);
  20. DWRUtil.addOptions(obj_City,{'':'请选择城市...'});
  21. }
  22. }
  23. functioncityReturn(data){
  24. varobj_City=document.getElementById("city");
  25. DWRUtil.removeAllOptions(obj_City);
  26. DWRUtil.addOptions(obj_City,{'':'请选择城市...'});
  27. DWRUtil.addOptions(obj_City,data);
  28. }
  29. functioncurrentDate(){
  30. varmyDate=newDate();
  31. varyear=myDate.getFullYear();
  32. varmonth=myDate.getMonth()+1;
  33. varday=myDate.getDate();
  34. varnow=year+"-"+month+"-"+day;
  35. document.forms[0]['user.startDate'].value=now;
  36. }
  37. //创建XMLHTTPRequest对象
  38. functiongetXMLHTTPRequest(){
  39. varxmlHttp;
  40. if(window.XMLHttpRequest){
  41. xmlHttp=newXMLHttpRequest();//非IE浏览器,用xmlhttprequest对象创建
  42. }elseif(window.ActiveXObject){
  43. xmlHttp=newActiveXObject("Microsoft.XMLHTTP");//IE浏览器用activexobject对象创建
  44. }
  45. returnxmlHttp;
  46. }
  47. varhttp;
  48. functioncheckUser(){
  49. varusername=document.forms[0]['user.username'].value;
  50. http=getXMLHTTPRequest();
  51. varurl="${path}/user/checkUser.action?user.username="+username;
  52. if(http){//成功创建XMLHTTPRequest对象
  53. http.open("GET",url,true);  //与服务端建立连接(请求方式post或get,地址,true表示异步)
  54. http.onreadystatechange=callback;//指定回调函数  
  55. http.send(null);//发送请求
  56. }
  57. }
  58. functioncallback(){
  59. if(http.readyState==4){
  60. if(http.status==200){
  61. processResponse();
  62. }
  63. }
  64. }
  65. //处理服务器端响应
  66. functionprocessResponse(){
  67. vartext=http.responseText;
  68. if(text=="true"){
  69. document.getElementById("error").innerHTML="用户名已经存在";
  70. }else{
  71. document.getElementById("error").innerHTML="";
  72. }
  73. }
  74. </script>
  75. </head>
  76. <body>
  77. <formname="form"method="post"action="${path}/user/userSave.action">
  78. <tablealign="center"class="table-form">
  79. <tr>
  80. <tdcolspan="4"class="table-title">添加用户信息</td>
  81. </tr>
  82. <tr>
  83. <tdclass=table-lable_title>用户名</td>
  84. <td><inputtype="text"name="user.username"onBlur="checkUser()"><spanid="error"style="color:red"></span></td>
  85. <tdclass=table-lable_title>密&nbsp;&nbsp;码</td>
  86. <td><inputtype="password"name="user.password"id="password"size="21"></td>
  87. </tr>
  88. <tr>
  89. <tdclass=table-lable_title>性&nbsp;&nbsp;别</td>
  90. <td><selectname="user.sex"style="width:50px">
  91. <optionvalue="1">&nbsp;男&nbsp;</option>
  92. <optionvalue="0">&nbsp;女&nbsp;</option>
  93. </select>
  94. </td>
  95. <tdclass=table-lable_title>省&nbsp;&nbsp;份</td>
  96. <td><selectname="user.provinceId"id="province"onChange="getCity();">
  97. <optionvalue="">请选择省份</option>
  98. <s:iteratorvalue="provinceList">
  99. <optionvalue="<s:propertyvalue="id"/>"><s:propertyvalue="provinceName"/></option>
  100. </s:iterator>
  101. </select>
  102. </td>
  103. </tr>
  104. <tr>
  105. <tdclass=table-lable_title>城&nbsp;&nbsp;市</td>
  106. <td><selectname="user.cityId"id="city">
  107. <optionvalue="">请选择城市...</option>
  108. </select>
  109. </td>
  110. <tdclass=table-lable_title>电&nbsp;&nbsp;话</td>
  111. <td><inputtype="text"name="user.telphone"id="telphone"size="20"></td>
  112. </tr>
  113. <tr>
  114. <tdclass=table-lable_title>E-Mail</td>
  115. <td><inputtype="text"name="user.email"id="email"size="20"></td>
  116. <tdclass=table-lable_title>添加日期</td>
  117. <td>
  118. <inputtype="text"name="user.startDate"class="Wdate"value=""onmouseover="currentDate();"onclick="newWdatePicker(this)"readonly>
  119. </td>
  120. </tr>
  121. <tr>
  122. <tdcolspan="4"class="table-button">
  123. <inputtype="submit"value="提交">
  124. <inputtype="reset"value="重置">
  125. </td>
  126. </tr>
  127. </table>
  128. </form>
  129. </body>
  130. </html>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>用户添加页面</title>
<script type="text/javascript" src="${path}/common/plugins/datepicker/WdatePicker.js"></script>
<script type="text/javascript" src="${path}/dwr/interface/place.js"></script>
<script type="text/javascript" src="${path}/dwr/engine.js"></script>
<script type="text/javascript" src="${path}/dwr/util.js"></script>
<script>

  function getCity(){
   var obj_pro=document.getElementById("province");
   var obj_City = document.getElementById("city");
   var pro_index=obj_pro.selectedIndex;
   var pro_value=obj_pro.options[pro_index].value;
    
  
  if(pro_value!=""&&pro_value!=null){
     
     place.getCityList(pro_value,cityReturn);
   
   }else{
     
     DWRUtil.removeAllOptions(obj_City);
     DWRUtil.addOptions(obj_City,{'':'请选择城市...'});
   }
   
  }
 
 
 function cityReturn(data){
   
     var obj_City = document.getElementById("city");
     DWRUtil.removeAllOptions(obj_City);
     DWRUtil.addOptions(obj_City,{'':'请选择城市...'});
	 DWRUtil.addOptions(obj_City,data);
 } 
 
 function currentDate(){
    var myDate=new Date();
    var year=myDate.getFullYear();
    var month=myDate.getMonth()+1;
    var day=myDate.getDate();
    var now=year+"-"+month+"-"+day;
    document.forms[0]['user.startDate'].value=now;
 }
 
  // 创建XMLHTTPRequest对象
 function getXMLHTTPRequest(){
     var xmlHttp;
     if(window.XMLHttpRequest){
         xmlHttp=new XMLHttpRequest();  //非IE浏览器,用xmlhttprequest对象创建
      }else if(window.ActiveXObject){
         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");  //IE浏览器用activexobject对象创建
      }
     
    return xmlHttp;
 
 }
 
 var http;
 function checkUser(){
    var username=document.forms[0]['user.username'].value;
    http=getXMLHTTPRequest();
    var url="${path}/user/checkUser.action?user.username="+username;
    if(http){  //成功创建XMLHTTPRequest对象
      http.open("GET",url,true);   //与服务端建立连接(请求方式post或get,地址,true表示异步)
      http.onreadystatechange=callback;  //指定回调函数   
      http.send(null);  //发送请求
    }
    
    
 }
 
 function callback(){
   if(http.readyState==4){
     if(http.status==200){
        processResponse();
     }
   
   }
  
 }
 //处理服务器端响应
 function processResponse(){
    var text=http.responseText;
    if(text=="true"){
        document.getElementById("error").innerHTML="用户名已经存在";
     }else{
        document.getElementById("error").innerHTML="";
     }
 }
 
 
 
</script>
</head>
<body>

<form name="form" method="post" action="${path }/user/userSave.action">
 
<table  align="center" class="table-form" >
  <tr>
     <td colspan="4" class="table-title">添加用户信息</td>
  </tr>
  <tr>
     <td class=table-lable_title>用户名</td>
     <td><input type="text" name="user.username" onBlur="checkUser()"><span id="error" style="color:red"></span></td>
     <td class=table-lable_title>密&nbsp;&nbsp;码</td>
     <td><input type="password" name="user.password" id="password" size="21"></td>
  </tr>
  <tr>
     <td class=table-lable_title>性&nbsp;&nbsp;别</td>
     <td><select name="user.sex" style="width:50px">
          <option value="1">&nbsp;男&nbsp;</option>
          <option value="0">&nbsp;女&nbsp;</option>
         </select>
     </td>
     <td class=table-lable_title>省&nbsp;&nbsp;份</td>
     <td><select name="user.provinceId" id="province" onChange="getCity();">
         <option value="">请选择省份</option>
         <s:iterator value="provinceList">
         <option value="<s:property value="id"/>"><s:property value="provinceName"/></option>
         </s:iterator>
         </select>
     </td>
  </tr> 
  <tr>
     <td class=table-lable_title>城&nbsp;&nbsp;市</td>
     <td><select name="user.cityId" id="city">
       <option value="">请选择城市...</option>
       </select>
     </td>
     <td class=table-lable_title>电&nbsp;&nbsp;话</td>
     <td><input type="text" name="user.telphone" id="telphone" size="20"></td>
   </tr>
   <tr>
     <td class=table-lable_title>E-Mail</td>
     <td><input type="text" name="user.email" id="email" size="20"></td>
     <td class=table-lable_title>添加日期</td>
     <td>
      <input type="text" name="user.startDate" class="Wdate" value="" onmouseover="currentDate();" onclick="new WdatePicker(this)" readonly>
     </td>
   </tr>
   <tr>
      <td colspan="4" class="table-button">
	     <input type="submit" value="提交" >
		 <input type="reset"  value="重置" >
	  </td>
     </tr>
</table>
   
</form>      
</body>
</html>



2. UserAction.java

Java代码 复制代码
  1. publicclassUserAction{
  2. privateUserServiceuserService;
  3. publicvoidsetUserService(UserServiceuserService){
  4. this.userService=userService;
  5. }
  6. publicvoidcheckUser(){
  7. HttpServletResponseresponse=ServletActionContext.getResponse();
  8. booleanflag=userService.isExistUser(user.getUsername());
  9. try{
  10. PrintWriterpw=response.getWriter();
  11. pw.print(flag);
  12. pw.close();
  13. }catch(IOExceptione){
  14. }
  15. }
  16. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值