posts - 8,  comments - 174,  trackbacks - 0

          程序更新:1、添加了對(duì)頁面顯示數(shù)據(jù)量的控制。
                         2、添加了刪除數(shù)據(jù)后,動(dòng)態(tài)刷新表數(shù)據(jù)功能。

          源碼下載:  test.rar

          更新文件:1、index.jsp 
                         2、UserAction.java

          注意事項(xiàng):1、由于加包后文件太大,源碼中沒有struts2.0 相關(guān)jar包。
                         2、該程序沒有用到數(shù)據(jù)庫,加入jar包后直接在web容器上運(yùn)行即可。
                         3、如果需要完整的源碼,請(qǐng)留言你的郵箱,或者聯(lián)系QQ:303225497。

          更新代碼:

                     index.jsp

                     
          <%@ page language="java" pageEncoding="UTF-8"%>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
              
          <head>
                  
          <title>test javascript</title>
              
          </head>
              
          <script defer="defer">
              
                  
          //XMLHTTP對(duì)象
                  var xmlHttp;    
                  
          //刪除數(shù)據(jù)所在的行id   
                  var deleteRowId;   
                  
                  
          /**
                   * 發(fā)送請(qǐng)求、調(diào)用回調(diào)方法
                   *
                   * @param url: 請(qǐng)求的URL    
                   *        afterMothod:請(qǐng)求返回時(shí)所調(diào)用的方法名稱(回調(diào)方法)
                   *
                   
          */

                  
          function showHint(url,afterMothod) {
                      
          try{
                          xmlHttp 
          = GetXmlHttpObject(afterMothod);
                          xmlHttp.open(
          "GET",url,false);
                          xmlHttp.send(
          null);
                      }
          catch(e){
                          alert(e);
                      }

                  }

                  
                  
          /**
                   * 根據(jù)瀏覽器創(chuàng)建XmlHttp對(duì)象
                   *
                   * @param handler:請(qǐng)求返回時(shí)所調(diào)用的方法名稱(回調(diào)方法)    
                   *       
                   
          */

                  
          function GetXmlHttpObject(handler) {
                      
          var objXmlHttp = null;
                      
          if (navigator.userAgent.indexOf("Opera">= 0{
                          alert(
          "This example doesn't work in Opera");
                          
          return;
                      }

                      
          if (navigator.userAgent.indexOf("MSIE">= 0{
                          
          var strName = "Msxml2.XMLHTTP";
                          
          if (navigator.appVersion.indexOf("MSIE 5.5">= 0{
                              strName 
          = "Microsoft.XMLHTTP";
                          }

                          
          try {
                              objXmlHttp 
          = new ActiveXObject(strName);
                              objXmlHttp.onreadystatechange 
          = handler;
                              
          return objXmlHttp;
                          }

                          
          catch (e) {
                              alert(
          "Error. Scripting for ActiveX might be disabled");
                              
          return;
                          }

                      }

                      
          if (navigator.userAgent.indexOf("Mozilla">= 0{
                          objXmlHttp 
          = new XMLHttpRequest();
                          objXmlHttp.onload 
          = handler;
                          objXmlHttp.onerror 
          = handler;
                          
          return objXmlHttp;
                      }

                  }

                  
                  
          /**
                   * 請(qǐng)求返回是調(diào)用的回調(diào)方法
                   * 服務(wù)器段返回 user 信息以xml形式發(fā)送到客戶斷  
                   * 解析 xml 數(shù)據(jù),把數(shù)據(jù)展現(xiàn)給用戶
                   *    
                   
          */

                  
          function flush() {
                      
          try{
                          
          if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"{
                              
                              
          //得到返回過來的XML對(duì)象,進(jìn)行數(shù)據(jù)處理
                              var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                              xmlDoc.async
          =false;
                              xmlDoc.loadXML(xmlHttp.responseText)  
                          
                              
          //返回錯(cuò)誤代碼,適合用于測(cè)試。
                              //var error = xmlDoc.parseError.errorCode;
                              //alert(error?xmlDoc.parseError.reason:"XML格式正確");
                              
                              
          //解析XML數(shù)據(jù),將數(shù)據(jù)刷新到userTable中
                              var users=xmlDoc.getElementsByTagName("user");
                              
          //插入數(shù)據(jù)前,先清空數(shù)據(jù)
                              clearTable(userTable);
                              
          for(var i=0;i<users.length;i++){
                                  
          //插入行
                                  var userRow=userTable.insertRow();
                                  
          //得到行標(biāo)示
                                  var rowId=userRow.rowIndex;      
                                  
                                  
          //取到一個(gè)user對(duì)象
                                  var user=users[i];                
                                  
                                  
          //插入序號(hào)列
                                  var userNum=userRow.insertCell();
                                  userNum.innerHTML 
          = "<font size=4 color=5adf83><b>"+(i+1)+"</b></font>"
                                  
                                  
          //插入userid列
                                  var userId=userRow.insertCell(); 
                                  
          //顯示userid  
                                  userId.innerHTML = user.getAttribute("userId");
                                  
                                  
          var userName=userRow.insertCell();
                                  userName.innerHTML
          =user.getAttribute("userName");
                                  
                                  
          var userTel=userRow.insertCell();
                                  userTel.innerHTML
          =user.getAttribute("userTel");
                                  
                                  
          var userOp=userRow.insertCell();
                                  
          //生成刪除user的url                    
                                  var deleteUserURl="user!delete.action?userNumber="+getPageUserNumber()+"&user.userId="+user.getAttribute("userId");
                                  userOp.innerHTML
          ="<a href=javascript:showHint('"+deleteUserURl+"',drop);>刪除</a>";
                              }

                          }

                      }
          catch(e){
                          alert(e.description);
                      }

                  }

                  
                  
          /**
                   * 請(qǐng)求返回是調(diào)用的回調(diào)方法
                   * 刪除 user對(duì)象 服務(wù)器段返回刪除后的操作信息和 user 列表數(shù)據(jù)  
                   * 客戶端將信息和數(shù)據(jù)展現(xiàn)給用戶
                   *    
                   
          */

                  
          function drop(){
                      
                      
          if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"{
                          
          var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                          xmlDoc.async
          =false;
                          xmlDoc.loadXML(xmlHttp.responseText);
                          
          var msg=xmlDoc.getElementsByTagName("msg")[0];
                          
                          
          if(msg.getAttribute("isSuccess")=="false"){
                              alert(msg.getAttribute(
          "msgString"));
                          }
          else{
                              alert(msg.getAttribute(
          "msgString"));
                              flush();
          //刪除成功后,刷新數(shù)據(jù)。
                          }

                      }

                  }

                  
                  
          /**
                   * 清空數(shù)據(jù)表的數(shù)據(jù) 
                   *
                   * @param opTable:所要清空的表對(duì)象    
                   *       
                   
          */

                  
          function clearTable(opTable){
                      
                      
          var size=opTable.rows.length;
                      
          for(var i=2;i<size;i++){
                          opTable.deleteRow(
          2);
                      }

                  }

                  
                  
          /**
                   * 得到一頁顯示數(shù)據(jù)的個(gè)數(shù)    
                   *       
                   
          */

                  
          function getPageUserNumber(){
                      
          return size.value;
                  }

                  
                  
          /**
                   * 動(dòng)態(tài)的根據(jù)用戶選擇的顯示數(shù)進(jìn)行動(dòng)態(tài)返回刷新操作的URL
                   *       
                   
          */

                  
          function getFlushUserURl(){
                      
          return "user!list.action"+"?userNumber="+getPageUserNumber();
                  }

              
          </script>
              
          <body>
                  
          <center>
                      
          <h3> 
                          用戶列表 
                      
          </h3>
                      
          <br>
                      
          <table id="userTable" title="用戶列表" width="60%">
                          
          <tbody align="center">
                              
          <tr bgcolor="#54821f">
                                  
          <th width="5%">
                                      序號(hào)
                                  
          </th>
                                  
          <th width="15%">
                                      用戶ID
                                  
          </th>
                                  
          <th width="15%">
                                      姓名
                                  
          </th>
                                  
          <th width="15%">
                                      電話
                                  
          </th>
                                  
          <th width="5%">
                                      操作
                                  
          </th>
                              
          <tr>
                          
          </tbody>
                      
          </table>
                      
          <br>
                      
          <br>
                      
          <br>
                      
          <button onclick="showHint(getFlushUserURl(),flush);">
                          刷新
                      
          </button>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                      
                      
          <font size="2" color="blue"><b>顯示用戶數(shù):</b></font>
                      
          <select id="size" name="userSize">
                          
          <option value="3" selected>3</option>
                          
          <option value="5">5</option>
                          
          <option value="10">10</option>
                          
          <option value="15">15</option>
                          
          <option value="20">20</option>
                      
          </select>
                  
          </center>
              
          </body>
          </html>


                     UserAction.java

                      
          package com.wen.test;

          import java.util.List;
          import java.util.Random;
          import java.util.Vector;


          import com.opensymphony.xwork2.ActionSupport;

          @SuppressWarnings(
          "serial")
          public class UserAction extends ActionSupport {

              
          private User user;

              
          private int userNumber;

              
          private List<User> userList;

              
          private List<String> msgList;

              
          public String delete() {

                  String id 
          = user.getUserId();
                  msgList 
          = new Vector<String>();

                  
          // 當(dāng)userId第5為是4的時(shí)候刪除失敗
                  if (id.charAt(4== '4'{
                      msgList.add(
          "false");
                      msgList.add(
          "刪除ID為:" + id + "用戶失敗!!");
                  }
           else {
                      
          // 刪除成功,做刪除操作
                      msgList.add("true");
                      msgList.add(
          "刪除ID為:" + id + "用戶成功!!");
                  }

                  
          return list();
              }


              
          public String list() {

                  userList 
          = new Vector<User>();

                  
          // 如果得不到usernuNmber,初始化為3。
                  userNumber = userNumber == 0 ? 3 : userNumber;

                  
          // 隨即得到 user 對(duì)象
                  for (int i = 0; i < userNumber; i++{
                      user 
          = new User();
                      user.setUserId(
          "" + new Random().nextInt());
                      user.setUserName(
          "name" + new Random().nextInt());
                      user.setUserTel(
          "pass" + new Random().nextInt());
                      userList.add(user);
                  }

                  
          return SUCCESS;
              }

              
              
          public User getUser() {
                  
          return user;
              }


              
          public void setUser(User user) {
                  
          this.user = user;
              }


              
          public List getMsgList() {
                  
          return msgList;
              }


              
          public List getUserList() {
                  
          return userList;
              }


              
          public void setUserNumber(int userNumber) {
                  
          this.userNumber = userNumber;
              }

          }






          posted on 2007-08-17 15:24 月月鳥 閱讀(3053) 評(píng)論(17)  編輯  收藏 所屬分類: ajax

          FeedBack:
          # re: struts2.0 + ajax + xml (附源碼)
          2007-08-17 16:03 | 葉楓
          謝了,運(yùn)行通過。  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)[未登錄]
          2007-08-17 21:33 | david
          wst0350@163.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)[未登錄]
          2007-08-18 08:07 | biyeqian
          gymai@163.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)[未登錄]
          2007-08-19 12:44 | sclsch
          mark一下。  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)[未登錄]
          2007-08-19 12:44 | sclsch
          # re: struts2.0 + ajax + xml (附源碼)
          2007-08-20 12:45 | ahanflw
          請(qǐng)給我一份源碼謝謝!81773090@qq.com   回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-08-24 09:16 | 薛端陽
          我以前也作過這種方式的ajax提交,首先為什么要通過actionforward的jsp作為輸出內(nèi)容的載體,直接response輸出就可以了,第二 我覺得我覺得ajax提交的處理不應(yīng)該放在我們的action業(yè)務(wù)里面,他不算是一個(gè)具體的業(yè)務(wù)邏輯,可以用servlet或者webservice處理,應(yīng)該是單獨(dú)的一層,如果您有什么好的見解,希望與您交流  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-08-24 13:51 | 小影
          @薛端陽
          1. 首先放到j(luò)sp中處理是將數(shù)據(jù)處理的邏輯與業(yè)務(wù)剝離,如果放在業(yè)務(wù)中去處理那么業(yè)務(wù)就會(huì)很龐大,代碼也就不太清晰,當(dāng)然后有其他原因。

          2. ajax的業(yè)務(wù)處理也需要一些信息處理,比如說數(shù)據(jù)驗(yàn)證、權(quán)限問題等等,當(dāng)然有的業(yè)務(wù)是不需要通過action就可以處理,比如說訪問一些公有的頁面等等,但是為了這些而單獨(dú)的去寫servlet或webservice那就完全沒有必要了,這樣顯的系統(tǒng)很雜亂。

          當(dāng)然這只是我個(gè)人的意見,大家也可以多多交流。

            回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-08-25 21:11 | badi
          非常感謝.
          我的郵箱是
          zhbadikill@163.com.
          先謝謝了.  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-08-28 18:56 | winson
          非常感謝
          我希望發(fā)給我 源碼
          我的郵箱是
          master6#163.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-08-31 15:56 | ghdvb@126.com
          感謝啊
          我的郵箱
          ghdvb@126.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-09-10 18:39 | xhl
          非常感謝
          我希望發(fā)給我 源碼
          我的郵箱是 xhl9500@163.com
            回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-09-28 23:42 | sunbeam
          非常感謝
          希望發(fā)給我 源碼
          我的郵箱是 sunxboy@gmail.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-10-17 11:29 | fei
          kary1109@sina.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2007-11-06 09:52 | mark
          也給我發(fā)一份,謝謝mark705@163.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2008-03-19 09:15 | li
          非常感謝
          我希望發(fā)給我 源碼
          l_w_qsoft@hotmail.com  回復(fù)  更多評(píng)論
            
          # re: struts2.0 + ajax + xml (附源碼)
          2008-06-18 21:37 | TYXING
          TIANYXI@126.COM

          THANK YOU  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(5)

          隨筆分類(8)

          隨筆檔案(8)

          文章分類(1)

          文章檔案(1)

          其他

          娛樂

          技術(shù)

          搜索

          •  

          積分與排名

          • 積分 - 116295
          • 排名 - 503

          最新隨筆

          最新評(píng)論

          評(píng)論排行榜

          主站蜘蛛池模板: 鄂托克旗| 永福县| 太湖县| 项城市| 平山县| 宜黄县| 利川市| 崇左市| 河源市| 苍山县| 潮安县| 于都县| 阳泉市| 达尔| 景德镇市| 澄江县| 宣城市| 伽师县| 南昌市| 威远县| 河曲县| 当雄县| 灵石县| 洛宁县| 大邑县| 南郑县| 翼城县| 耒阳市| 姚安县| 综艺| 博湖县| 西城区| 大兴区| 博客| 赤峰市| 石景山区| 清原| 年辖:市辖区| 广西| 阳东县| 海安县|