J度空間

          struts+ajax

          ?? 標準的struts是同步交互的,客戶端提交請求到Action,服務端處理后findforward()刷新整個頁面,ajax是異步交互,頁面通過 xmlHttpRequest提交一個后臺線程到服務端,服務端處理后將xml或者html寫回客戶端,客戶端回調函數隨即刷新內存中的dom樹.
          ?
          ?? 由于ajax不用刷新整個頁面,且每次回調函數直接更新內存,所以速度非常快,且客戶體驗很豐富,比如用ajax可以很容易實現菜單聯動(因為它只更新下 級菜單,上一級菜單根本不會受影響,在jsp中意味著不用關心頁面刷新時其它表單元素的選擇值),另外還有一點ajax是客戶端的技術,對struts的 架構不會影響(客戶端的提交可以用ajax提交到servlet,也可以沿用struts方式提交到Action中),因此很容易想到將ajax和 Struts結合起來,共用兩者的優勢.

          ?? 用ajax+struts的架構有一些需要注意的問題,這是我在項目中的一些感受,在這里寫出來,供各位同仁參考:

          ?? 1:設計頁面跳轉的操作不要用ajax.ajax主要是用于異步交互,所以它是同一個頁面的操作,在xmlHttpRequest.open()方法中, "get"方法明確表示是從服務端獲取,"post"方法雖然表示提交,但主要用于瀏覽器url隱藏參數的具體值,在ajax的servlet中用 response.sendRedirect()方法是無效的,原頁面會傻等后臺servlet的相應.因此MIS系統中的新增,修改等需要到另一個頁面 的操作都應該用傳統的form.submit()的方式提交頁面.

          ??? 2:在ajax傳參時要特別注意\",\'這些字符,尤其是一個參數中含多個字段的情況,盡量不要用'$','%'等特殊字符來分割.在servlet端 getParameter()的時候會出問題,比如你的參數是param1="dkfjdslf"+form1.text1.value;而你的 text1中的字符串含有\"字符,那\"后面的
          就都傳不過去了.我們項目中遇到過這種情況,找了很久才發現參數只傳了一部分.建議如果參數不全的情況首先檢查其中是否有特殊字符.

          ??? 3:struts和ajax合用時有時會出現struts刷新整個頁面結果把ajax效果覆蓋了的情況,比如我們的翻頁組件是會提交整個表單到原頁面,這 時如果客戶做了ajax的其它操作,翻頁返回時這些效果就都沒有了.我的建議是在頁面中用<input type=hidden>元素保留ajax的主要效果,每次ajax回調函數返回時更新該元素,這樣即時重新提交了該頁面也可以通過 request.getParameter()取到ajax效果元素的值.在我們項目中是把每次的查詢sql語句做為hidden元素保存了的,因此每次 翻頁后下級表格或者其它表單元素仍可以通過該sql取得.

          ?? 4:ajax大部分是js腳本,js腳本的調試比較麻煩,主要的辦法就是alert()和iE左下腳的錯誤提示,一般來說大部分的腳本錯誤都在語法上,比 如select1.options[1]寫成了select1.option[1]什么的,看資料上有IE有Dom Inspector可以查看內存中的dom樹結構(在google上搜Internet Explorer developer toolbar),用這些第三方的工具可以幫我們調試ajax

          ?? 5:有時候strust在request中setAttribute的東西會跟ajax傳的parameter沖突(比如上頭提到的sql,在新增操作完 后返回查詢頁面時,struts會在request.setAttribute("sql",sql), 而原查詢頁面的下級菜單查詢等ajax操作會傳以"sql="+sql的方式傳參,這樣兩個sql會沖突,我的建議是 request.getParameter("sql")==null?request.getAttribute("sql"):request.getParameter ("sql"),首先保證本頁面的異步操作,再考慮其它頁面的跳轉操作.

          ?? 好了,暫且寫這些吧,其中有些可能各位高人看起來是廢話,那請毫不留情的斧正!在此祝各位同仁中秋國慶愉快,祝和我一樣國慶加班的同事們身體健康,萬事如意.

          posted on 2007-08-13 10:24 藍色幽默 閱讀(1563) 評論(0)  編輯  收藏 所屬分類: Struts


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


          網站導航:
           

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統計

          常用鏈接

          留言簿(4)

          隨筆分類

          文章分類

          相冊

          搜索

          最新評論

          主站蜘蛛池模板: 七台河市| 班戈县| 宕昌县| 忻城县| 金乡县| 津南区| 安义县| 靖安县| 湖南省| 吉安市| 宜兴市| 张家口市| 色达县| 巫山县| 西林县| 新郑市| 郑州市| 博客| 华宁县| 中牟县| 昌黎县| 申扎县| 赣榆县| 三台县| 海安县| 广安市| 满城县| 平果县| 台东市| 平度市| 西吉县| 逊克县| 吴川市| 三河市| 娄底市| 合作市| 丹凤县| 固原市| 略阳县| 龙陵县| 东安县|