<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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 月月鳥 閱讀(3050) 評論(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)

    其他

    娛樂

    技術

    搜索

    •  

    積分與排名

    • 積分 - 116222
    • 排名 - 504

    最新隨筆

    最新評論

    評論排行榜

    主站蜘蛛池模板: 99精品国产免费久久久久久下载| 男人j进女人p免费视频| 免费播放一区二区三区| 亚洲AV无码专区国产乱码电影| 免费人成激情视频在线观看冫 | 在线免费观看污网站| 日韩亚洲人成在线| 日本高清免费不卡在线| 国产亚洲午夜精品| 久久精品国产精品亚洲| 中文字幕免费观看全部电影| 亚洲国产精品一区二区第一页| 2021精品国产品免费观看| 在线亚洲高清揄拍自拍一品区| 妞干网免费观看视频| 色一情一乱一伦一视频免费看| 亚洲精品无码成人片在线观看| a级毛片免费完整视频| 亚洲精品456在线播放| 成人一a毛片免费视频| 精品女同一区二区三区免费播放| 亚洲熟伦熟女新五十路熟妇| 久久国产精品免费观看| 亚洲av午夜精品无码专区| 国产又黄又爽又刺激的免费网址| 国产免费区在线观看十分钟 | a级毛片免费观看在线| 中文字幕亚洲精品| 成人免费视频一区| 大妹子影视剧在线观看全集免费| 亚洲人成电影在在线观看网色| 免费精品一区二区三区在线观看| kk4kk免费视频毛片| 亚洲国产综合在线| 亚洲国产成人久久一区WWW| 无码日韩精品一区二区免费暖暖| 国产亚洲精品影视在线| 亚洲夜夜欢A∨一区二区三区 | 亚洲人成网站色7799| 亚洲日韩精品无码专区网址 | 成人免费毛片视频|