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

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

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

    emu in blogjava

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

    項目開發告一段落,喘口氣,總結一下。

    1 AJAX還是AJAH
    * AJAX的很多經典應用其實都是利用xmlhttp空間訪問后臺程序,后臺程序返回腳本用eval回調或者返回簡單數據的方式來開發。這樣的開發模式的好處是設計簡單輕巧,對熟悉dhtml的開發者來說上手會比較塊,跨瀏覽器問題也容易解決,做簡單的應用也夠用。gmail,google suggest都是用這種方式。但是在我看來gmail已經吧AJAH應用到極限了,更復雜的數據結構用簡單數據和回調方式來組織就開始有點力不從心了。

    * 前AJAX的一種傳統做法是后臺返回完整的xml文件后用腳本(利用控件)解析xml后操作頁面的dom節點來動態生成頁面的一部分。這樣作的優點是可以充分利用xml的強大表達能力傳輸各種數據結構,缺點是頁面的dom操作效率不高,而且IE在dom操作的API上bug多多。之所以叫“前AJAX”,因為我們在AJAX這個名詞出現前已經這樣做了很多年了。

    * AJAX另一種傳統做法是后臺返回完整的xml文件后用腳本(利用控件)解析xml后生成html代碼再灌回頁面的層中。這樣的做法回避了頁面dom操作的一些問題,在生成的內容比較多的時候利用一些字符串計算的優化技巧(主要是數組和正則的應用)可以相當高效的生成頁面。在我看來這是未來的發展趨勢。

    我現在的項目主要采用的是第三種方式,結合第二種。我使用的是自己的一個小巧的框架,模擬jsp的語法來生成html代碼,但是依賴于瀏覽器的xml解析API,因此難以跨瀏覽器。google的開源項目ajaxslt提供了一個純js的xslt解決方式,功能更強大,可以在頁面中局部的應用xslt解析xml生成html或者其他形式的數據,但是帶來了xslt這個技術門檻。sf上的ZK似乎也不錯,但是帶來的是xul這個技術門檻,同時后臺被綁定在了J2EE服務器上面。

    2 CACHE
    如果使用xmlhttp控件,在發起http請求的時候IE會包辦cache策略,很多時候更新了數據卻無法獲得更新后的數據。一開始試圖用傳統方式在URL后面加隨機數來強制更新,但是IE仍然距不發出新的請求。
    一個解決方法是在后臺寫expires: 0或者其他的禁止前臺cache的頭,但是這樣在數據沒有更新的時候又會帶來不必要的服務器壓力、響應延遲和帶寬浪費。
    一個稍微好一點的解決方法是,前臺在提交數據以后,需要強制更新數據的時候:

    xmlhttp.setRequestHeader("If-Modified-Since","0");

    3 系統錯誤: -1072896748。
    用xmlhttp接收到數據的時候經常是用xmldom.loadXML(xmlhttp.responseXML.xml)來判斷返回的數據的正確性,但是如果后臺送過來不正確的xml的時候有時回觸發-1072896748系統錯誤。這是因為xmlhttp.responseXML已經沒有解析到東西了,我們還試圖訪問它的xml屬性而觸發的。
    解決的方法是在使用responseXML.xml 或者 responseText的時候要做try/catch:
    try{var tmp = xmlhttp.responseXML.xml}catch(ex){err=true;}
    有些人喜歡catch的時候判斷 exception.description=="系統錯誤: -1072896748。" , 如果客戶端不是簡體中文版的系統的時候就判斷不到了。其實這個地方只要有異常,都必須走異常處理流程了,不用區分的那么仔細。

    posted on 2005-11-22 10:24 emu 閱讀(8706) 評論(18)  編輯  收藏

    評論

    # re: 做了兩個月ajax,總結一些小經驗 2005-11-22 11:01 eamoi
    emu好樣的。加油,希望看到后續更深入的文章。  回復  更多評論
      

    # 太忙了 2005-11-22 13:23 emu
    早就想做做些研究,在項目中多實踐一些新東西,和大家多分享一些東西,可是實在忙。上周基本上都是晚上11點后下的班,星期天好一點,6點多就回去了。疲于奔命,很多事情都做不了。有心想替公司挖幾個高手過來幫忙,可惜高手們都請不動。  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-11-22 14:45 huangyi
    我覺得用xsl把xml轉成html要方便許多 尤其xml復雜的時候  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-11-22 16:30 emu
    對熟悉xslt的開發人員來說當然是如此了。可是要把人家全部拉過來培訓xslt阻力也不小啊,只能指望下面的項目能不能用上。  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-11-23 23:01 BlueO2
    公司既然不是做ajax產品框架,而是做應用,為什么不應用現有的框架呢?比如dwr  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-11-24 09:17 emu
    公司不做java的,DWR這樣的java后臺框架也確實支撐不起我們這樣龐大的后臺壓力。  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-11-28 11:43 Henri
    Writing AJAX web applications is definitly not a low cost job. And ZK(http://zk1.sourceforge.net) is aimed at making developing AJAX web applications as easy as developing a traditional desktop windows applications. There is no need to learn javascript and DOM and XMLHttpRequest. ZK hides all these away. XUL in that meaning is actually an easy to lean markup language to design rich GUI pages and you write all your control and data biding codes in pure java.

    However, ZK is expected to release next version which will support xhtml tags directly to enable those majority of html web page designers to write AJAX web applications.

    ZK is a java servlet-based presentation engine. All you need is a java servlet engine (e.g. Tomcat, Jetty, etc.). As for JavaEE, we do support it but you don't need the full set. ZK is made as thin as possible a presentation engine and it is only for presentation only. Therefore, you can use it with Spring, Strut, Hibernate, Jdbc, etc... without limitation.

    Here is the Live demo, maybe you want to give it a try. (http://www.potix.com/zkdemo/userguide)

    Henri  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-11-28 22:10 emu
    >>All you need is a java servlet engine

    當我還在做java的時候,我會覺得這是多么理所當然的要求啊,可惜從java世界走出來的時候才發現,java并不總是最好的答案。  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-12-02 19:24 chenqj
    ajaxslt只支持ie6.0以上的版本,這點比較郁悶  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2005-12-03 15:43 emu
    不會吧,看來我得趕快去加入這個項目了  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2006-01-11 10:24 呵呵
    >>當我還在做java的時候,我會覺得這是多么理所當然的要求啊,可惜從java世界走出來的時候才發現,java并不總是最好的答案

    有的時候答案好不好不是關鍵,關鍵是別人要這個答案 :)  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2006-05-25 20:10 pc
    http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=1106514212512 java線程的缺陷(上)
    http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=200644231255 Java反編譯的研究
    http://www.kpwang.com/pc/view.jsp?board_id=1&article_id=20064614542 Java實現ftp功能(源程序)  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2006-05-26 09:52 交流交流
    有沒有考慮用JSON格式來傳遞數據?我想,在web應用中JSON比較高效些。  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2006-05-30 10:55 老鼠
    呵呵:)

    謝謝emu的經驗共享:)

    我想把您這篇文章轉走,可以嗎?

    如果您有疑問,請在此留言或給我E-MAIL,謝謝:)

    cammy.sun@hotmail.com  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2006-07-13 09:18 unifly
    可以考慮下JSON;
    干嗎不用好的框架;
    建議看看Ajax in action;
    http://www-128.ibm.com/developerworks/cn/java/j-ajax2/;
      回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2006-07-15 14:39 emu
    呵呵,有用框架的高手、寫框架的高手和不用框架的高手的。
    json我通常直接通過script來引用,而不是通過xmlhttp(request)來獲取,這樣需要做的事情更少。這個話題上和meizz有過一些討論,不過這是另一個話題了,一篇日志中不可能什么都講的。  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2009-05-21 17:07 藏獒
    ajax,高級東西啊,我HTML都用不好會的哦.  回復  更多評論
      

    # re: 做了兩個月ajax,總結一些小經驗 2009-05-21 17:07 魔獸世界私服
    學習了....  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 在线亚洲v日韩v| 两个人日本免费完整版在线观看1| 国产一区二区免费| 亚洲一区二区久久| 亚洲成av人片在www鸭子| 西西大胆无码视频免费| 亚洲人成综合在线播放| 国产一级一毛免费黄片| 色噜噜AV亚洲色一区二区| 黄色网址免费在线观看| 亚洲AV无码一区二区三区系列| 日本免费久久久久久久网站| 91亚洲自偷手机在线观看| 日本免费xxxx| 国产亚洲精品AAAA片APP| 国产免费人人看大香伊| 色多多A级毛片免费看| 亚洲国产精品成人久久| 蜜桃成人无码区免费视频网站| 77777午夜亚洲| 亚洲Av无码乱码在线znlu| 国产在线观看无码免费视频| 99久久亚洲综合精品成人网| 国产精品视频免费观看| 无码一区二区三区亚洲人妻| 在线观看午夜亚洲一区| 波多野结衣中文字幕免费视频| 亚洲精品久久无码av片俺去也| 亚洲成?Ⅴ人在线观看无码| 免费91最新地址永久入口| 77777午夜亚洲| 亚洲中文字幕在线乱码| 国产乱子精品免费视观看片| 国产亚洲视频在线观看网址 | 人人玩人人添人人澡免费| 亚洲精品日韩专区silk| 国产免费av片在线播放| 久久久久成人片免费观看蜜芽| 亚洲欧美成aⅴ人在线观看| 久久精品国产亚洲麻豆| 成人免费在线视频|