posts - 8,  comments - 174,  trackbacks - 0

          程序更新:1、添加了對頁面顯示數據量的控制。
                         2、添加了刪除數據后,動態刷新表數據功能。

          源碼下載:  test.rar

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

          注意事項:1、由于加包后文件太大,源碼中沒有struts2.0 相關jar包。
                         2、該程序沒有用到數據庫,加入jar包后直接在web容器上運行即可。
                         3、如果需要完整的源碼,請留言你的郵箱,或者聯系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對象
                  var xmlHttp;    
                  
          //刪除數據所在的行id   
                  var deleteRowId;   
                  
                  
          /**
                   * 發送請求、調用回調方法
                   *
                   * @param url: 請求的URL    
                   *        afterMothod:請求返回時所調用的方法名稱(回調方法)
                   *
                   
          */

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

                  }

                  
                  
          /**
                   * 根據瀏覽器創建XmlHttp對象
                   *
                   * @param handler:請求返回時所調用的方法名稱(回調方法)    
                   *       
                   
          */

                  
          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;
                      }

                  }

                  
                  
          /**
                   * 請求返回是調用的回調方法
                   * 服務器段返回 user 信息以xml形式發送到客戶斷  
                   * 解析 xml 數據,把數據展現給用戶
                   *    
                   
          */

                  
          function flush() {
                      
          try{
                          
          if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"{
                              
                              
          //得到返回過來的XML對象,進行數據處理
                              var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                              xmlDoc.async
          =false;
                              xmlDoc.loadXML(xmlHttp.responseText)  
                          
                              
          //返回錯誤代碼,適合用于測試。
                              //var error = xmlDoc.parseError.errorCode;
                              //alert(error?xmlDoc.parseError.reason:"XML格式正確");
                              
                              
          //解析XML數據,將數據刷新到userTable中
                              var users=xmlDoc.getElementsByTagName("user");
                              
          //插入數據前,先清空數據
                              clearTable(userTable);
                              
          for(var i=0;i<users.length;i++){
                                  
          //插入行
                                  var userRow=userTable.insertRow();
                                  
          //得到行標示
                                  var rowId=userRow.rowIndex;      
                                  
                                  
          //取到一個user對象
                                  var user=users[i];                
                                  
                                  
          //插入序號列
                                  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);
                      }

                  }

                  
                  
          /**
                   * 請求返回是調用的回調方法
                   * 刪除 user對象 服務器段返回刪除后的操作信息和 user 列表數據  
                   * 客戶端將信息和數據展現給用戶
                   *    
                   
          */

                  
          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();
          //刪除成功后,刷新數據。
                          }

                      }

                  }

                  
                  
          /**
                   * 清空數據表的數據 
                   *
                   * @param opTable:所要清空的表對象    
                   *       
                   
          */

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

                  }

                  
                  
          /**
                   * 得到一頁顯示數據的個數    
                   *       
                   
          */

                  
          function getPageUserNumber(){
                      
          return size.value;
                  }

                  
                  
          /**
                   * 動態的根據用戶選擇的顯示數進行動態返回刷新操作的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%">
                                      序號
                                  
          </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>顯示用戶數:</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>();

                  
          // 當userId第5為是4的時候刪除失敗
                  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 對象
                  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 月月鳥 閱讀(3054) 評論(17)  編輯  收藏 所屬分類: ajax

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

          2. ajax的業務處理也需要一些信息處理,比如說數據驗證、權限問題等等,當然有的業務是不需要通過action就可以處理,比如說訪問一些公有的頁面等等,但是為了這些而單獨的去寫servlet或webservice那就完全沒有必要了,這樣顯的系統很雜亂。

          當然這只是我個人的意見,大家也可以多多交流。

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

          THANK YOU  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(5)

          隨筆分類(8)

          隨筆檔案(8)

          文章分類(1)

          文章檔案(1)

          其他

          娛樂

          技術

          搜索

          •  

          積分與排名

          • 積分 - 116316
          • 排名 - 503

          最新隨筆

          最新評論

          評論排行榜

          主站蜘蛛池模板: 安义县| 淮南市| 台东县| 遂昌县| 五大连池市| 石台县| 安新县| 南汇区| 平度市| 哈巴河县| 昔阳县| 广平县| 太原市| 漠河县| 武清区| 英超| 吉木萨尔县| 安国市| 西充县| 利辛县| 塔城市| 永春县| 合阳县| 吉林市| 白玉县| 徐州市| 永州市| 阜平县| 土默特左旗| 澎湖县| 东乌珠穆沁旗| 曲周县| 永泰县| 龙岩市| 台南县| 汉阴县| 保山市| 新闻| 阿克| 左权县| 新乐市|