2008年5月7日 星期三

[Struts] 分享我的開發流程

對於 Web Programmer 來說,使用 framework 是一件既方便也是必須作的事

因為 framework 幫助我們減少開發上枯燥乏味的 details

增加我們開發 Application(Web or Alone) 的速度!!

Struts 是一個在 JAVA 環境下的 Web framework

它的主要精神就是在於 MVC (Model-View-Controller) 的結構

以往使用 JSP 開發的 programmer,為了要達到 MVC 的 pattern

往往採用 MVC Model1 - JSP + JavaBean 的使用,

或是採用 Model2 - Servlet + JSP + JavaBean

但是無論是 Model1 or Model2 最困難的問題就是 effort 太高

MVC 之間的元件需要自行管理,Request Processes 需要自行管理等...

這些繁雜瑣碎的事物,我們透過使用 framework 就可以輕鬆的幫我們解決

Struts 對於 MVC 的支援相當的完整,使用者透過向 controller 發出 request

Controller 會決定是否需要到 Model 中取得資料給 View ,或是直接顯示 View來回應使用者

MVC 的 pattern 讓 programmer 之間可以達到 separate of concern,好處有太多,大家可以慢慢的體會~~

不過一種 framework 有再多的好處,如果無法掌握其開發的 process,對於 programmer 來說,那還不如就不要用!!

接下來我就提供我歷經兩個專案後所得到的開發經驗:

MVC 的核心在於 Controller,Controller 是整個 MVC 的開端,但是 Controller 端又需要 Model 端做為 Data Supplier

所以,以我的經驗事先從 MVC 的 M 開始著手

接下來就直接開發 Model components 囉!!

等等,先別急~~

Model components 對於 programmer 來說大多是跟 Database 存取有關

所以市面上有許多 ORM 的 solutions,比如目前最有名的 Hibernate (小弟尚在研究中~~)

這些 ORM 主要就是幫助我們解決 object and relative 的 mapping

畢竟,Database 的世界與 Program 的世界還是相距甚遠~~

今天不談 ORM,所以我們就將 Model components 用 JDBC 來設計

熟悉 JDBC 的人都知道,最中取出來的資料是一個 ResultSet 物件

如果我們就直接將 ResultSet 物件丟給 Controller 去處理,這樣就需要由 Controller 負責將 Model 產生的結果作收尾的動作

因為 ResultSet 是一個持續跟 Database 有連線關係的物件,照理說應該是由 Model 端元件來負責 ResultSet 的資料清裡

所以我們就需要在 Controller and Model 之間改以 JavaBean 做為溝通的橋樑

所以我們的開發第一步就是:開發一個與 Database Table 一樣內容的 JavaBean,也就是開發一個 Entity Bean

有了 Entity Bean,第二步就是:開發我們的 Model 元件

透過撰寫 SQL 語法對 JDBC 作存取的動作,並且在查詢結果 return 之前,Model 元件需要負責關閉 JDBC 物件與 Database 之間的連線,以確保資源的釋放

有了這兩樣的元件後,直觀的來說,就是對 Controller 開始動手囉!!

不過,回到 Struts 的運作,因為使用者可能由 View 端 submit requests,所以 View and Controller 之間的溝通是透過 ActionForm 物件

ActionForm 其實算是一種 JavaBean,不過他提供更多一點的功能

所以我們的第三步就是:開發 ActionForm

開發 ActionForm 物件最主要就是需要釐清使用者會將哪些資料 submit 給 Controller

有了這三樣元件後,我們就是真的要開始開發 Struts 中最核心的 Controller

第四步:開發 Controller

完成了 Controller 的內容,我們就可以知道哪些資訊是需要給使用者觀看的,所以我們就可以開發 View 端

第五步:開發 View

View 端透過一些 tags 來完成顯示的內容

以上是我開發的習慣流程,如果您是正需要使用 Struts 來開發您的 Web Application,您可以參考這樣的開發流程,來減低您 survey 的時間

沒有留言: