posts - 8,  comments - 174,  trackbacks - 0
          實(shí)現(xiàn)邏輯:

          ???? 實(shí)現(xiàn)user對(duì)象的select、delete,動(dòng)態(tài)的將數(shù)據(jù)更新到表格中。
          ?????select: 服務(wù)端返回xml數(shù)據(jù),在頁(yè)面進(jìn)行數(shù)據(jù)顯示。
          ?????delete :服務(wù)端將刪除信息以xml格式返回,包含刪除狀態(tài)和刪除信息。

          實(shí)現(xiàn)技術(shù):
          ?????????struts 2.0 + AJAX + XML

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

          index.jsp頁(yè)面:

          <%@?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對(duì)象
          ????????var?deleteRowId;???//刪除數(shù)據(jù)所在的行

          ????????
          //url:訪問的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);
          ????????????}

          ????????}

          ????????
          ????????
          //創(chuàng)建XMLHTTP對(duì)象
          ????????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;
          ????????????}

          ????????}

          ????????
          //刷新數(shù)據(jù)
          ????????function?flush()?{
          ????????????
          try{
          ????????????????
          if?(xmlHttp.readyState?==?4?||?xmlHttp.readyState?==?"complete")?{
          ????????????????????var?xmlDoc?
          =?new?ActiveXObject("Microsoft.XMLDOM");
          ????????????????????xmlDoc.async
          =false;
          ????????????????????xmlDoc.loadXML(xmlHttp.responseText)??
          ????????????????
          ????????????????????
          //返回錯(cuò)誤代碼
          ????????????????????
          //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);
          ????????????}

          ????????}

          ????????
          //刪除數(shù)據(jù)
          ????????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"));
          ????????????????}

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

          ????????}

          ????????
          ????????
          //清空表數(shù)據(jù)
          ????????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+"用戶成功?。?/span>");
          ????????}

          ????????
          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

          ????希望對(duì)初學(xué)著有所幫助,歡迎大家一起探討java 問題?。?img height="20" src="/Emoticons/QQ/15.gif" width="20" border="0" />
          posted on 2007-08-15 13:05 月月鳥 閱讀(1829) 評(píng)論(9)  編輯  收藏 所屬分類: ajax

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

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


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

          常用鏈接

          留言簿(5)

          隨筆分類(8)

          隨筆檔案(8)

          文章分類(1)

          文章檔案(1)

          其他

          娛樂

          技術(shù)

          搜索

          •  

          積分與排名

          • 積分 - 116316
          • 排名 - 503

          最新隨筆

          最新評(píng)論

          評(píng)論排行榜

          主站蜘蛛池模板: 麻城市| 丰城市| 贺州市| 永州市| 蛟河市| 阳谷县| 江安县| 天门市| 辉县市| 宜良县| 游戏| 满城县| 金川县| 灵璧县| 曲水县| 荆州市| 探索| 祁东县| 德惠市| 邵阳县| 丹凤县| 望奎县| 云安县| 镇原县| 时尚| 平遥县| 东平县| 宁南县| 林周县| 尼玛县| 舟曲县| 银川市| 格尔木市| 永胜县| 遂宁市| 扶沟县| 平昌县| 武夷山市| 梅河口市| 延安市| 阳江市|