posts - 8,  comments - 174,  trackbacks - 0
          實現邏輯:

          ???? 實現user對象的select、delete,動態的將數據更新到表格中。
          ?????select: 服務端返回xml數據,在頁面進行數據顯示。
          ?????delete :服務端將刪除信息以xml格式返回,包含刪除狀態和刪除信息。

          實現技術:
          ?????????struts 2.0 + AJAX + XML

          主要文件:
          ?????????index.jsp????? user.java(數據模型)?????? UserAction.java(業務邏輯)?? struts.xml(struts2.0配置文件)

          index.jsp頁面:

          <%@?page?language="java"?pageEncoding="UTF-8"%>
          <%
          ????String?path?
          =?request.getContextPath();
          ????String?basePath?
          =?request.getScheme()?+?"://"
          ????????????
          +?request.getServerName()?+?":"?+?request.getServerPort()
          ????????????
          +?path?+?"/";
          %>

          <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">
          <html>
          ????
          <head>
          ????????
          <base?href="<%=basePath%>">
          ????????
          <title>test?javascript</title>
          ????
          </head>
          ????
          <script?defer="defer">
          ????
          ????????var?xmlHttp;???????
          //XMLHTTP對象
          ????????var?deleteRowId;???//刪除數據所在的行

          ????????
          //url:訪問的URL??afterMothod:請求返回時所調用的方法(回調方法)
          ????????function?showHint(url,afterMothod)?{
          ????????????
          try{
          ????????????????xmlHttp?
          =?GetXmlHttpObject(afterMothod);
          ????????????????xmlHttp.open(
          "GET",url,false);
          ????????????????xmlHttp.send(
          null);
          ????????????}
          catch(e){
          ????????????????alert(e);
          ????????????}

          ????????}

          ????????
          ????????
          //創建XMLHTTP對象
          ????????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;
          ????????????}

          ????????}

          ????????
          //刷新數據
          ????????function?flush()?{
          ????????????
          try{
          ????????????????
          if?(xmlHttp.readyState?==?4?||?xmlHttp.readyState?==?"complete")?{
          ????????????????????var?xmlDoc?
          =?new?ActiveXObject("Microsoft.XMLDOM");
          ????????????????????xmlDoc.async
          =false;
          ????????????????????xmlDoc.loadXML(xmlHttp.responseText)??
          ????????????????
          ????????????????????
          //返回錯誤代碼
          ????????????????????
          //var?error?=?xmlDoc.parseError.errorCode;
          ????????????????????
          //alert(error?xmlDoc.parseError.reason:"XML格式正確");
          ????????????????????
          ????????????????????var?users
          =xmlDoc.getElementsByTagName("user");
          ????????????????????clearTable(userTable);
          ????????????????????
          for(var?i=0;i<users.length;i++){
          ????????????????????????var?userRow
          =userTable.insertRow();
          ????????????????????????var?rowId
          =userRow.rowIndex;
          ????????????????????????
          ????????????????????????var?user
          =users[i];
          ????????????????????????var?userId
          =userRow.insertCell();
          ????????????????????????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();
          ????????????????????????var?deleteUrl
          ="user!delete.action?user.userId="+user.getAttribute("userId");
          ????????????????????????userOp.innerHTML
          ="<a?href=javascript:deleteRowId="+rowId+";showHint('"+deleteUrl+"',drop);>刪除</a>";
          ????????????????????}

          ????????????????}

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

          ????????}

          ????????
          //刪除數據
          ????????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{
          ????????????????????userTable.deleteRow(deleteRowId);
          ????????????????????alert(msg.getAttribute(
          "msgString"));
          ????????????????}

          ????????????}

          ????????}

          ????????
          ????????
          //清空表數據
          ????????function?clearTable(opTable){
          ????????????
          ????????????var?size
          =opTable.rows.length;
          ????????????
          for(var?i=2;i<size;i++){
          ????????????????opTable.deleteRow(
          2);
          ????????????}

          ????????????
          ????????}

          ????????????
          ????
          </script>
          ????
          <body>
          ????????
          <center>
          ????????????
          <h3>
          ????????????????用戶列表
          ????????????
          </h3>
          ????????????
          <br>
          ????????????
          <table?id="userTable"?title="用戶列表"?width="50%">
          ????????????????
          <tbody>
          ????????????????????
          <tr?bgcolor="#54821f">
          ????????????????????????
          <td?width="15%">
          ????????????????????????????ID
          ????????????????????????
          </td>
          ????????????????????????
          <td?width="15%">
          ????????????????????????????姓名
          ????????????????????????
          </td>
          ????????????????????????
          <td?width="20%">
          ????????????????????????????電話
          ????????????????????????
          </td>
          ????????????????????????
          <td?width="5%">
          ????????????????????????????操作
          ????????????????????????
          </td>
          ????????????????????
          <tr>
          ????????????????
          </tbody>
          ????????????
          </table>
          ????????????
          <br>
          ????????????
          <br>
          ????????????
          <br>
          ????????????
          <button?onclick="showHint('user!list.action',flush);">
          ????????????????刷新
          ????????????
          </button>
          ????????
          </center>
          ????
          </body>
          </html>


          user.java


          package?com.wen.test;

          public?class?User?{

          ????
          private?String?userId;

          ????
          private?String?userName;

          ????
          private?String?userTel;

          ????
          public?String?getUserId()?{
          ????????
          return?userId;
          ????}


          ????
          public?void?setUserId(String?userId)?{
          ????????
          this.userId?=?userId;
          ????}


          ????
          public?String?getUserName()?{
          ????????
          return?userName;
          ????}


          ????
          public?void?setUserName(String?userName)?{
          ????????
          this.userName?=?userName;
          ????}


          ????
          public?String?getUserTel()?{
          ????????
          return?userTel;
          ????}


          ????
          public?void?setUserTel(String?userTel)?{
          ????????
          this.userTel?=?userTel;
          ????}

          }


          UserAction.java


          package?com.wen.test;

          import?java.util.List;
          import?java.util.Vector;

          import?com.opensymphony.xwork2.ActionSupport;

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

          ????
          private?User?user;
          ????
          private?List<User>?userList;
          ????
          private?List<String>?msgList;
          ????
          ????
          public?String?flush(){
          ????????
          return?SUCCESS;
          ????}

          ????
          ????
          public?String?delete(){
          ????????
          ????????
          int?id=Integer.parseInt(user.getUserId());
          ????????msgList
          =new?Vector<String>();
          ????????
          if(id<0||id>3){
          ????????????msgList.add(
          "false");
          ????????????msgList.add(
          "刪除ID為:"+id+"用戶失敗!!");
          ????????}
          else{
          ????????????
          //做刪除操作
          ????????????msgList.add("true");
          ????????????msgList.add(
          "刪除ID為:"+id+"用戶成功!!");
          ????????}

          ????????
          return?SUCCESS;
          ????}

          ????
          ????
          public?String?list(){
          ????????
          ????????userList
          =new?Vector<User>();
          ????????
          ????????user
          =new?User();
          ????????user.setUserId(
          "0");
          ????????user.setUserName(
          "wen");
          ????????user.setUserTel(
          "029-82507114");
          ????????userList.add(user);
          ????????
          ????????user
          =new?User();
          ????????user.setUserId(
          "1");
          ????????user.setUserName(
          "peng");
          ????????user.setUserTel(
          "029-34650060");
          ????????userList.add(user);
          ????????
          ????????user
          =new?User();
          ????????user.setUserId(
          "2");
          ????????user.setUserName(
          "tao");
          ????????user.setUserTel(
          "13570854091");
          ????????userList.add(user);
          ????????
          ????????user
          =new?User();
          ????????user.setUserId(
          "2");
          ????????user.setUserName(
          "tao");
          ????????user.setUserTel(
          "13570854091");
          ????????userList.add(user);
          ????????
          ????????user
          =new?User();
          ????????user.setUserId(
          "2");
          ????????user.setUserName(
          "tao");
          ????????user.setUserTel(
          "13570854091");
          ????????userList.add(user);
          ????????
          ????????user
          =new?User();
          ????????user.setUserId(
          "2");
          ????????user.setUserName(
          "tao");
          ????????user.setUserTel(
          "13570854091");
          ????????userList.add(user);
          ????????
          ????????user
          =new?User();
          ????????user.setUserId(
          "2");
          ????????user.setUserName(
          "tao");
          ????????user.setUserTel(
          "13570854091");
          ????????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;
          ????}

          }



          struts.xml


          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?struts?PUBLIC
          ????????"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.0//EN"
          ????????"http://struts.apache.org/dtds/struts-2.0.dtd"
          >
          <struts>
          ????
          <constant?name="struts.enable.DynamicMethodInvocation"
          ????????value
          ="true"?/>
          ????
          <constant?name="struts.devMode"?value="true"?/>

          ????
          <package?name="users"?extends="struts-default">

          ????????
          <result-types>
          ????????????
          <result-type?name="userInfo"?class="com.wen.test.User"?/>
          ????????????
          <result-type?name="userList"?class="java.util.List"?/>
          ????????????
          <result-type?name="msgList"?class="java.util.List"?/>
          ????????
          </result-types>

          ????????
          <action?name="user"?class="com.wen.test.UserAction">
          ????????????
          <result>/result.jsp</result>
          ????????
          </action>
          ????
          </package>
          </struts>


          END

          ????希望對初學著有所幫助,歡迎大家一起探討java 問題!!
          posted on 2007-08-15 13:05 月月鳥 閱讀(1828) 評論(9)  編輯  收藏 所屬分類: ajax

          FeedBack:
          # re: struts 2.0 + 原始 AJAX + XML
          2007-08-15 17:18 | 編程、設計是職業更是愛好
          不錯,大道至簡。對于WEB開發,濫用的Tag是災難。  回復  更多評論
            
          # re: struts 2.0 + 原始 AJAX + XML
          2009-02-12 23:09 | 繼文
          上面的樓主:你上面的例子能正常測試嗎?我怎么得到action中返回的一個頁面呢,希望在解釋一下。  回復  更多評論
            
          # re: struts 2.0 + 原始 AJAX + XML
          2011-10-19 12:22 | ww
          最突出的功能自然是調試(Debug),可以對Java代碼,JavaScript,JQuery,Ajax等技術進行調試。   其他編輯功能拋開不看,這點遠勝Eclipse。   首先查看Map類型的對象,如果實現類采用的是哈希映射,則會自動過濾空的Entry實例。 不像Eclipse,只能在默認的toString()方法中尋找你所要的key。   其次,需要動態Evaluate一個表達式的值,比如我得到了一個類的實例,但是并不知曉它的API,可以通過Code Completion點出它所支持的方法,這點Eclipse無法比擬。   最后,在多線程調試的情況下,Log on console的功能可以幫你檢查多線程執行的情況。   前面已經說過了IDEA所提倡的是智能編碼,是減少程序員的工作,那么IDEA具體又有哪些值得推崇呢?總結以下25點,希望能有個比較全面的介紹。   1. 智能的選取。在很多時候我們要選取某個方法,或某個循環或想一步一步從一個變量到整個類慢慢擴充著選取,IDEA就提供這種基于語法的選擇,在默認設置中Ctrl+w,可以實現選取范圍的不斷擴充,這種方式在重構的時候尤其顯得方便。   2. 豐富的導航模式。IDEA提供了豐富的導航查看模式,例如ctrl+e顯示最近打開過的文件,ctrl+n顯示你希望顯示的類名查找框   (該框同樣有智能補充功能,當你輸入字母后IDEA將顯示所有候選類名)。在最基本的project試圖中,你還可以選擇多種的試圖方式。   3. 歷史記錄功能。不用通過版本管理服務器,單純的IDEA就可以查看任何工程中文件的歷史記錄,但版本恢復時你可以很容易的將其恢復。   4. JUnit的完美支持。   5. 對重構的優越支持。IDEA是所有IDE中最早支持重構的,其優秀的重構能力一直是其主要賣點之一。   6. 編碼輔助。java規范中提倡的tostring(),hashcode(),equals(),以及所有的get/set方法,你可以不用進行任何的輸入就可以實現代碼的自動生成,從而把你從無聊的基本方法編碼中解放出來。   7. 靈活的排版功能。基本所有的IDE都有重排版功能,但僅有IDEA的是人性的,因為她支持排版模式的定制,你可以根據不同的項目要求采用不同的排版方式。   8. XML的完美支持。   9. 簡潔易用的GUI界面。   10. 與文件系統自動同步。當你最小化IDEA,直接對文件進行編輯之后,重新打開IDEA后IDEA將自動的完成文件的更新,而不用重新導入工程或刷新工程。   11. 自定義的快捷鍵。強大的快捷鍵設置,基本可以讓程序員離開鼠標工作。   12. 動態語法檢測。任何不符合java規范,自己預定義的規范,累贅都將在頁面中加亮顯示。   13. 代碼檢查。對代碼進行自動分析,檢測不符合規范的,存在風險的代碼,并加亮顯示。   14. 對JSP的完全支持。不需要任何的插件,完全支持JSP。   15. 智能編輯。代碼輸入過程中,自動補充方法或類。   16. EJB支持。不需要任何插件完全支持EJB(6.0 支持ejb3.0)   17. 列編輯模式。用過UtralEdit的肯定對其的列編輯模式贊賞不已,因為她減少了很多很多的無聊重復工作,而IDEA完全支持該模式,從而更加提高了編碼效率。   18. 智能模板。預置模板可以讓你把經常用到的方法編輯進模板,使用時你只用輸入簡單的幾個字母就可以完成全部代碼的編寫。例如使用比較高的public static void main(String[] args){}你可以在模板中預設pm為該方法,輸入時你只要輸入pm再按代碼輔助鍵,IDEA將完成代碼的自動輸入。   19. 完美的自動代碼完成。智能檢查類中方法,當發現方法名只有一個時自動完成代碼輸入,從而減少剩下代碼的編寫工作。   20. Ant 支持。不需要任何的第三方插件。   21. 不使用代碼檢查。自動檢查代碼中不使用的代碼,并給出提示,從而使代碼更高效。   22. 智能代碼。自動檢查代碼,發現與預置規范有出入的代碼給出提示,若程序員同意修改自動完成修改。例如代碼:String str = "Hello Intellij " + "IDEA"; IDEA將給出優化提示,若程序員同意修改IDEA將自動將代碼修改為:String str = "Hello Intellij IDEA";   23. 正則表達的查找和替換功能。查找替代支持正則表達,從而提高效率。   24. JavaDoc預覽支持。支持JavaDoc的預覽功能,在JavaDoc代碼中ctrl+q顯示JavaDoc的結果,從而提高doc文檔的質量。   25. 程序員意圖支持。當程序員編碼時IDEA時時檢測你的意圖,或提供建議,或直接幫你完成代碼。  回復  更多評論
            
          # re: struts 2.0 + 原始 AJAX + XML[未登錄]
          # re: struts 2.0 + 原始 AJAX + XML[未登錄]
          2011-11-02 10:55 | pp
          2011-9-29 2
          2011-10-10 0.5
          2011-10-11 0.5
          2011-10-12 2
          2011-10-13 0.5
          2011-10-17 0.5
          2011-10-18 1
          2011-10-19 3
          2011-10-20 1
          2011-10-23 12
          2011-10-24 0.5
          2011-10-25 1
          2011-10-29 7.5  回復  更多評論
            
          # re: struts 2.0 + 原始 AJAX + XML[未登錄]
          2011-11-03 09:19 | qq
          2011/10/12 2
          2011/10/17 0.5
          2011/10/18 1
          2011/10/19 0.5
          2011/10/20 1
          2011/10/23 11
          2011/10/25 1
          2011/10/29 7.5
            回復  更多評論
            
          # re: struts 2.0 + 原始 AJAX + XML
          # re: struts 2.0 + 原始 AJAX + XML[未登錄]

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


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

          常用鏈接

          留言簿(5)

          隨筆分類(8)

          隨筆檔案(8)

          文章分類(1)

          文章檔案(1)

          其他

          娛樂

          技術

          搜索

          •  

          積分與排名

          • 積分 - 116304
          • 排名 - 503

          最新隨筆

          最新評論

          評論排行榜

          主站蜘蛛池模板: 樟树市| 宜宾市| 宿迁市| 新干县| 池州市| 城固县| 临泽县| 柳河县| 明溪县| 梁山县| 綦江县| 平潭县| 宁乡县| 沅江市| 濉溪县| 大石桥市| 伊金霍洛旗| 平武县| 万年县| 苏尼特左旗| 简阳市| 旺苍县| 永和县| 兴仁县| 大同县| 武宁县| 芷江| 普陀区| 会泽县| 柞水县| 静乐县| 孟州市| 定边县| 黎城县| 景宁| 共和县| 甘孜| 墨竹工卡县| 宜川县| 新野县| 柘城县|