網頁應用程式開發的一些基礎觀念

今天又是一蹋糊塗的課程,大致整理一下把內容規程三塊吧

1. JSP、JavaBean和Servlet介紹
2. 系統開發分層概念
3. MVC模式

-----------------------------------------------------------------------------------------------------------
1. JSP、JavaBean和Servlet介紹

JavaBean跟Servlet都是Java類別。

但Servlet是繼承自javax.servlet.HttpServlet,所以可以收Httprequest和送Httpresponse等網頁應用程式的基本功能。

而JavaBean就單純的是個Java類別,可以繼承自任何類別;其用途是介於JSP和Servlet之間當作傳遞的橋樑。似乎又可以分為兩種用途:工具或是單純的參數物件



相關參考連結:
JSP、Servlet 與 JavaBean 的組合應用

----------------------------------------------------------------------------------------------------------
2. 系統開發分層概念

三層式架構: 
這裡的三層指的是Presentation Tier、Business Tier、Data Tier


圖片來源:http://criticaltechnology.blogspot.tw/2011/09/mvc-in-three-tier-architecture.html



在古代的應用程式是只有兩層:前端的表現層跟後端的程式+資料庫。
但在現今的環境下,我們已經把程式跟資料庫分離,讓資料維護以及程式維護獨立。
因此現今的網頁應用程式就分成三層,讓各層的工作更加確切跟獨立。



而我一直把這三層式架構跟MVC模式喇在一起,傻傻分不清楚。

其實兩者是不同的東西,三層式架構是軟體架構。

而MVC模式則是在程式設計上遵循的一個方式,也就是設計模式,讓程式設計師跟UI設計師可以更清楚的分工。
如果把兩者拉在一起看的話,M-V-C三者的集合大致上就是做出Presentation Tier;(Model會在Business Tier,負責處理一些邏輯運作跟資料庫存取)


相關參考連結:
系統開發的分層


----------------------------------------------------------------------------------------------------------
3. MVC模式

接著再把今天聽到的MVC模式套近來
(雖然到現在還是沒有很懂這樣套MVC到底對不對....囧)

MVC就是由三個群體組成:Model-View-Control,這樣的模式是為了讓應用程式開發時容易專業分工跟維護。

  • Model:有兩種主要功能,一是把資料封裝的區塊,二是執行應用程式的商業邏輯(Business Logic),包括各種常用功能、資料庫存取等操作。

  • View:將Model的資料提取出來,繪製成User看到的介面(View)。也就是執行表現邏輯(Presentation Logic)。

  • Controller:控制流程跟回應,處理一些操作和互動。例如選擇一個View回傳給User、將User的request交由某一Model處理...


至於有些功能要寫在Model或是Controller就要看設計(這也是我原本的癥結點,把DB Query都寫在Servlet,其實也可以,但未來維護成本會增加);如果寫在Controller(Servlet),表示功能修改就要大改程式,但如果寫在Model(JavaBean),則丟棄bean即可。所以維護上使用後者方法會比較容易。


Model也還可以再切更細或不同的邏輯,例如上圖的黃色跟綠色可能就是由一個Model切出來的。


最後直接轉載自網路的一段說明:
具體實現時,JavaBean作為模型層,Servlet作為控制層,JSP作為視圖層。
每層的作用如下: MVC框架
1.JavaBean作為Model層,實現各個具體的應用邏輯和功能。

2.Servlet作為Controller層,負責處理HTTP請求,包括:對輸入數據的檢查和轉換。 
通過JavaBean訪問數據庫。 初始化JSP頁面中要用到的JavaBean或對象。
根據處理中不同的分支和結果,決定轉向那個JSP等。

3.JSP作為View層,負責生成交互後返回的界面。它主要通過信息共享,獲取Servlet生成的對象或JavaBean,從中取出數據,插入到HTML頁面中。


(11/28更新)
這周學到一個例子,Model就像負責「組出需要使用的SQL語法」的工作,可能需要接收某些參數,例如學科的做參數,然後Model就可以產出撈出該學科所有成績的SQL語法。

Controller,就是負責決定要傳入什麼參數給Model,假設有個使用者從點了"資管"的Button,Controller就會接收到資管當成參數,傳給Model,由Model組出撈資管成績的SQL語法。

等到撈完資料之後,會有一個View,負責製造HTML語法,將這個HTML呈現給使用者看。








留言

這個網誌中的熱門文章

API、Method和Library是什麼東西和關係?

《人月神話》簡易心得

新增欄位,該用alter還是create and drop