人要有夢想

          為夢想努力

          常用鏈接

          統計

          j2ee

          最新評論

          架構之web framework- struts

          []?

          Martin.guo

          ?

          J2ee 架構中一般都要考慮 Web Framework 的選擇。很多人選擇比較流行的 Struts 。項目組中遇到過這樣的情況,有些人不熟悉 Struts ,而有些人又對 Struts 青睞有加。有沒有一個折中的辦法來滿足所有的人呢?

          ?

          我是這樣設計的:

          通過攔截提交到 ActionServlet 上的 http 請求,經過 Http Parse 來收集請求參數,以 Name-Value 的形式存放為請求值對象,并且放在請求線程相關的上下文中。這個時候你就可以在 Action 執行結束前的任何地方拿到這些請求數據了。

          ?

          在這個基礎上,我們保留了 Struts Action ,并且規定 Action execute 方法里不能出現任何跟業務相關的代碼 , 僅僅是負責頁面的流轉。

          ?

          那么業務怎么辦呢?我們定義了一個接口 Command, 它也只有一個方法 , 我們也取名字為 execute, 并且沒有任何參數和返回數值。該方法的職責就是執行業務邏輯。這個時候你就要問了。 Action 里抽離業務邏輯,怎么調用 Command 呢?請求提交的數據怎么給 Command ?Command 執行完后的業務數據怎么返回?

          ?

          我們設計了一個業務執行器,它的功能就是執行 Command 的業務邏輯實現 . 而把執行器的執行寫到了 Action 里面。這樣就隔離了頁面流轉和業務執行。 Action 的代碼顯的很簡練和模板化。

          ?

          由于請求數據是放在請求線程相關的上下文中,所以可以很方便的拿到。同時 Command 執行完畢的返回數據也是通過這個上下文返回給 Action 或者其他跟此請求線程相關的組件,說白一點就是此線程能夠跑到的任何代碼處都可以去跟上下文交互,存取線程相關的數據和服務。

          ?

          設計到此為止,已經可以回答開頭的問題了。

          ?

          對于熟悉 Struts 的人呢,可以積極放心的使用 Struts 標簽,使用 Formbean, 但有一點就是自己要把 FormBean 放到線程相關的上下文中,這樣你就可以在 Command 里面去拿出來工作了,同時 Command 執行完畢后,你就可以順手把返回數據填充到這個 FormBean 里面去了。跟你平時使用沒有太大區別。

          ?

          而對于不熟悉的人呢,你可能不喜歡寫 Struts 標簽,也可能不喜歡死板的 Formbean, 那么 OK ,你完全不用關心這些,你只要直接在 Command 里面去寫邏輯代碼就可以了。但有一點就是要,你要手工把返回的數據集合放到 request 里面去,然后到流轉的 JSP 里面取出來展示。

          ?

          OK ,皆大歡喜。

          ?

          ?

          msn:gdq123@hotmail.com

          posted on 2006-06-07 19:29 人要有夢想 閱讀(1179) 評論(3)  編輯  收藏 所屬分類: software architecture

          評論

          # re: 架構之Web Framework 2006-06-07 22:45 lizongbo

          command也有現成的,
          apache commons chains就是干這個的。
          struts的新版本就將使用 commons chains。

            回復  更多評論   

          # re: struts 2006-06-08 08:18 人要有夢想

          關鍵是對于不熟悉struts的人,可以不用關心什么formbean,使用傳統的方式就可以了。在Action里面也不會出現reqeust.getParameter()之類的東西了。可以直接寫業務邏輯以及JSP展示。  回復  更多評論   

          # re: struts 2006-06-09 00:00 極易缺陷管理系統

          極易缺陷管理系統
          http://www.jesoft.cn/posts/list/1.page  回復  更多評論   


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


          網站導航:
           
          主站蜘蛛池模板: 海阳市| 聊城市| 玉环县| 神木县| 鄯善县| 三原县| 昌邑市| 连州市| 张家川| 木兰县| 龙山县| 扶绥县| 特克斯县| 定襄县| 黑龙江省| 凤凰县| 沭阳县| 商城县| 定南县| 海宁市| 游戏| 格尔木市| 曲麻莱县| 嵩明县| 无为县| 时尚| 西昌市| 文成县| 盈江县| 西丰县| 南木林县| 聊城市| 云南省| 石城县| 勐海县| 马边| 上犹县| 咸宁市| 娄底市| 仙桃市| 武鸣县|