人要有夢想

          為夢想努力

          常用鏈接

          統計

          j2ee

          最新評論

          2006年6月7日 #

          架構之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 @ 2006-06-07 19:29 人要有夢想 閱讀(1174) | 評論 (3)編輯 收藏

          主站蜘蛛池模板: 安义县| 基隆市| 上栗县| 宣威市| 永顺县| 五台县| 利川市| 屯门区| 南丰县| 浦县| 纳雍县| 石棉县| 乐业县| 湛江市| 黄石市| 余姚市| 修武县| 宜阳县| 嘉善县| 黑山县| 洛扎县| 东兴市| 灯塔市| 盐池县| 长寿区| 安仁县| 商都县| 陆河县| 湾仔区| 新安县| 福海县| 利川市| 灵台县| 砀山县| 合山市| 阿图什市| 通化县| 丽水市| 鄱阳县| 宜章县| 海南省|