<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
    實(shí)現(xiàn)邏輯:

    ???? 實(shí)現(xiàn)user對象的select、delete,動(dòng)態(tài)的將數(shù)據(jù)更新到表格中。
    ?????select: 服務(wù)端返回xml數(shù)據(jù),在頁面進(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頁面:

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

    ????????
    //url:訪問的URL??afterMothod:請求返回時(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對象
    ????????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+"用戶成功!!");
    ????????}

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

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

    FeedBack:
    # re: struts 2.0 + 原始 AJAX + XML
    2007-08-15 17:18 | 編程、設(shè)計(jì)是職業(yè)更是愛好
    不錯(cuò),大道至簡。對于WEB開發(fā),濫用的Tag是災(zāi)難。  回復(fù)  更多評論
      
    # re: struts 2.0 + 原始 AJAX + XML
    2009-02-12 23:09 | 繼文
    上面的樓主:你上面的例子能正常測試嗎?我怎么得到action中返回的一個(gè)頁面呢,希望在解釋一下。  回復(fù)  更多評論
      
    # re: struts 2.0 + 原始 AJAX + XML
    2011-10-19 12:22 | ww
    最突出的功能自然是調(diào)試(Debug),可以對Java代碼,JavaScript,JQuery,Ajax等技術(shù)進(jìn)行調(diào)試。   其他編輯功能拋開不看,這點(diǎn)遠(yuǎn)勝Eclipse。   首先查看Map類型的對象,如果實(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就提供這種基于語法的選擇,在默認(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. 對重構(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. 靈活的排版功能。基本所有的IDE都有重排版功能,但僅有IDEA的是人性的,因?yàn)樗С峙虐婺J降亩ㄖ疲憧梢愿鶕?jù)不同的項(xiàng)目要求采用不同的排版方式。   8. XML的完美支持。   9. 簡潔易用的GUI界面。   10. 與文件系統(tǒng)自動(dòng)同步。當(dāng)你最小化IDEA,直接對文件進(jìn)行編輯之后,重新打開IDEA后IDEA將自動(dòng)的完成文件的更新,而不用重新導(dǎo)入工程或刷新工程。   11. 自定義的快捷鍵。強(qiáng)大的快捷鍵設(shè)置,基本可以讓程序員離開鼠標(biāo)工作。   12. 動(dòng)態(tài)語法檢測。任何不符合java規(guī)范,自己預(yù)定義的規(guī)范,累贅都將在頁面中加亮顯示。   13. 代碼檢查。對代碼進(jìn)行自動(dòng)分析,檢測不符合規(guī)范的,存在風(fēng)險(xiǎn)的代碼,并加亮顯示。   14. 對JSP的完全支持。不需要任何的插件,完全支持JSP。   15. 智能編輯。代碼輸入過程中,自動(dòng)補(bǔ)充方法或類。   16. EJB支持。不需要任何插件完全支持EJB(6.0 支持ejb3.0)   17. 列編輯模式。用過UtralEdit的肯定對其的列編輯模式贊賞不已,因?yàn)樗郎p少了很多很多的無聊重復(fù)工作,而IDEA完全支持該模式,從而更加提高了編碼效率。   18. 智能模板。預(yù)置模板可以讓你把經(jīng)常用到的方法編輯進(jìn)模板,使用時(shí)你只用輸入簡單的幾個(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í)檢測你的意圖,或提供建議,或直接幫你完成代碼。  回復(fù)  更多評論
      
    # 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ù)  更多評論
      
    # 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ù)  更多評論
      
    # re: struts 2.0 + 原始 AJAX + XML
    # re: struts 2.0 + 原始 AJAX + XML[未登錄]

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


    網(wǎng)站導(dǎo)航:
     
    <2012年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    26272829123
    45678910

    常用鏈接

    留言簿(5)

    隨筆分類(8)

    隨筆檔案(8)

    文章分類(1)

    文章檔案(1)

    其他

    娛樂

    技術(shù)

    搜索

    •  

    積分與排名

    • 積分 - 116227
    • 排名 - 504

    最新隨筆

    最新評論

    評論排行榜

    主站蜘蛛池模板: 国产午夜免费福利红片| 国产AV无码专区亚洲AV漫画 | 国产白丝无码免费视频| 亚洲免费在线视频观看| 国产成人免费网站在线观看| 亚洲综合图色40p| 久久精品国产99国产精品亚洲| 看免费毛片天天看| 99xxoo视频在线永久免费观看| 日韩一区二区在线免费观看| 亚洲精品乱码久久久久66| 亚洲人成网站免费播放| 91成人免费观看在线观看| 成人性生交大片免费看无遮挡| 精品亚洲一区二区三区在线播放| 亚洲精品在线免费看| 四虎影视久久久免费观看| 免费h片在线观看网址最新| 亚洲黄黄黄网站在线观看| 亚洲人成毛片线播放| 精品国产免费人成网站| 无码人妻精品一二三区免费| 国产AV无码专区亚洲AVJULIA| 亚洲av日韩aⅴ无码色老头 | 免费看成人AA片无码视频羞羞网| 亚洲区日韩区无码区| 色噜噜亚洲男人的天堂| 久久久精品免费国产四虎| 亚洲国产成人久久综合一区77| 亚洲人成激情在线播放| 国产一精品一AV一免费| 免费一级毛片在级播放| 亚洲香蕉久久一区二区三区四区| 大地资源网高清在线观看免费| 国产免费69成人精品视频| 亚洲婷婷在线视频| 久久精品免费一区二区三区| 亚洲欧洲日产国码高潮αv| 亚洲国产系列一区二区三区| 久久久久国产精品免费免费不卡| 国产亚洲美日韩AV中文字幕无码成人 |