人要有夢想

          為夢想努力

          常用鏈接

          統計

          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 人要有夢想 閱讀(1174) 評論(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  回復  更多評論   


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


          網站導航:
           
          主站蜘蛛池模板: 长海县| 渭源县| 元朗区| 云浮市| 邳州市| 若尔盖县| 广饶县| 油尖旺区| 南昌县| 遂平县| 吉隆县| 灌云县| 胶南市| 长葛市| 顺昌县| 晋中市| 屯留县| 兴和县| 顺义区| 张掖市| 新晃| 柳江县| 乡宁县| 南皮县| 会东县| 乐至县| 固始县| 马公市| 阳新县| 漾濞| 临江市| 普定县| 都安| 贵溪市| 紫金县| 饶阳县| 通许县| 万盛区| 黄龙县| 恭城| 图木舒克市|