SSH-Struts(一)——基本原理

簡介

    Struts框架是MVC的一個實現,它很好的結合了JSP、Servlet、JavaBean、Taglib等技術。它爲MVC的各層提供了良好的支持,就像房地產商蓋房子時先蓋的大樓框架。只要引入到項目就相當於你已經有了基本的雛形。
    ok,在概念的層面去理解偏技術的知識,我不認爲這是一個好的出發點。對於這類知識的學習最好的方法應該是,動手。所以,我們不尋求準確的概念定義,而是從使用中來認知。

回顧

    MVC

    作爲MVC的一個實現,學習之前我們先簡單的回顧一下MVC的內容。MVC架構模式,將一個應用程序的出入、處理、輸出流程分爲:模型層、視圖層、控制層。MVC模式下的各層關係和功能如下圖(注:圖片來源於《征服JSP企業網站開發》443頁):

    有關MVC的東西都在這張圖裏了,這裏要提個題外話:MVC和三層的關係。聽到也看到不少關於這兩個的討論,結論基本都是這兩種模式沒有關係。個人認爲這是從兩種不同的角度去優化程序結構的。MVC是從處理流程的角度去劃分:顯示、控制、處理;而三層則是從功能的角度出發:顯示、邏輯處理、數據訪問。這兩種模式是不衝突的!他們的關係也就是這麼個關係了,不能簡單的說是有或者沒有關係,有點太粗暴了。

    Model1

    Model1也是MVC的一種,通過JSP+JavaBean來實現。因爲JSP頁面可以很方便的寫入JavaBean的代碼涉及業務邏輯,也可以結合Html用用於顯示,又可以通過Javascript來控制流轉。也就是說JSP在應用程序中擔當了多種角色:負責與客戶端的通信、處理請求、處理回覆。這樣的結構的優點是簡單、方便,可以快速的完成應用開發。同時,也因爲這樣的結構也導致了其開發的分配以及後期的維護的困難。如圖爲Model1的結構(注:圖片來源《STRUTS實用開發指南 基於MVC+MYECLIPSE的JAVA WEB應用開發》3頁)

    Model2

    爲了改善Model中JSP頁面的指責過多而帶來的問題,Model2引入了Servlet充當控制器,同時不在JSP中寫入Java代碼來直接訪問數據庫。這樣就是程序的各個部分職責單一明確了,即JSP頁面只負責顯示,Servlet負責流轉。這樣維護起來就相對容易,同時開發時的分工的界限也可以很確定。這樣做的導致的缺點則是處理流程變的複雜,本來一個JSP就可以搞定的事情現在則需要分多個步驟纔可以完成。Model2的結構如下圖(注:圖片來源同上一張,5頁):

Struts 

    Mode1和Model2只是概念,Sturts則是實現。Struts是MVC的一種實現,說的準確一點應該是Model2的實現。直接看圖吧:
    Struts對Model2的各個部分都做了實現,但是其最重點的是頁面流轉的部分。即圖中的ActionServlet+struts-config.xml的部分,使得頁面流轉的路徑很清晰,同時靈活性也非常好。
   小結:本篇博客主要是從MVC的概念到Struts的架構的實現一步一步的瞭解,從而能夠知道Struts各個部分對應的MVC的什麼概念,以及在應用程序中的角色。至於詳細的Struts內的組件將在後續的博客中介紹。這樣吧!

發佈了124 篇原創文章 · 獲贊 11 · 訪問量 39萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章