Struts 原理與應用(一)

本文是俺在公司技術會議上的演講提綱

算是一個小教程吧。

Struts 原理與應用 2003年12月1日

Chapter 1: MVC Architecture

介紹Struts的理論基礎,MVC架構

Chapter 2: J2EE N-tiers Structure

介紹J2EE的n層結構以及Struts所處的位置

Chapter 3: Struts Configuration

Struts的基本安裝說明

Chapter 4: Example 1: Basic Framework

一個最簡單的例子,用來熟悉Struts的基本用法

Chapter 5: Struts Work Flow

介紹Struts的工作流程

Chapter 6: Example 2: Login Application

Struts提供的example,簡單登陸程序。

Chapter 7: Taglib and Other Skills

介紹Taglib在Struts中的應用,以及其他相關功能

Chapter 8: Other Web Framework

Struts與其他Framework的比較

 

Chapter 1: MVC Architecture

Struts principle and practice

模型-視圖-控制器(MVC)是80年代Smalltalk-80出現的一種軟件設計模式,現在已經被廣泛的使用。

1 模型(Model)
模型是應用程序的主體部分。模型表示業務數據,或者業務邏輯.

2 視圖(View)
視圖是應用程序中用戶界面相關的部分,是用戶看到並與之交互的界面。

3 控制器(controller)
控制器工作就是根據用戶的輸入,控制用戶界面數據顯示和更新model對象狀態。

MVC 式的出現不僅實現了功能模塊和顯示模塊的分離,同時它還提高了應用系統的可維護性、可擴展性、可移植性和組件的可複用性

早期的程序中,如果不注意對數功能和顯示的解耦合,常常會導致程序的複雜及難以維護。很多VB,Delphi等RAD程序都有這種問題。甚至現在的C#,Java有時候也會出現把業務邏輯寫在顯示模塊中的現象

管MVC設計模式很早就提出,但在Web項目的開發中引入MVC卻是步履維艱。主要原因:一是在早期的Web項目的開發中,程序語言和HTML的分離一直難以實現。CGI程序以字符串輸出的形式動態地生成HTML內容。後來隨着腳本語言的出現,前面的方式又被倒了過來,改成將腳本語言書寫的程序嵌入在HTML內容中。這兩種方式有一個相同的不足之處即它們總是無法將程序語言和HTML分離。二是腳本語言的功能相對較弱,缺乏支持MVC設計模式的一些必要的技術基礎。直到基於J2EE的JSP Model 2問世時才得以改觀。它用JSP技術實現視圖的功能,用Servlet技術實現控制器的功能,用JavaBean技術實現模型的功能

JSP Model 1 與 JSP Model 2

SUN在JSP出現早期制定了兩種規範,稱爲Model1和Model2。雖然Model2在一定程度上實現了MVC,但是它的應用用並不盡如人意

JSP Model 1

JSP Model 2

model2 容易使系統出現多個Controller,並且對頁面導航的處理比較複雜

有些人覺得model2仍不夠好,於是Craig R. McClanahan 2000年5月 提交了一個WEB framework給Java Community.這就是後來的Struts.

2001年7月,Struts1.0,正式發佈。該項目也成爲了Apache Jakarta的子項目之一

Struts 質上就是在Model2的基礎上實現的一個MVC架構。它只有一箇中心控制器,他採用XML定製轉向的URL。採用Action來處理邏輯

Chapter 2: J2EE N-tiers Structure

Struts principle and practice

早期的網絡系統設計常常採用三層結構。最常見的結構,就是表示( presentation )層 , 領域( domain )層 , 以及基礎架構( infrastructure )層。

n層結構的提出是爲了適應當前B/S模式開發WEB Application的需要而提出的。傳統的Brown模型是指:表示層( Presentation ),控制 / 中介層( Controller/Mediator ),領域層( Domain ) , 數據映射層( Data Mapping ) , 和數據源層( Data Source )。它其實就是在三層架構中增加了兩個中間層。控制 / 中介層位於表示層和領域層之間,數據映射層位於領域層和基礎架構層之間。

J2EE規範提出了自己的n-tiers結構。

下表是幾種模型的對照

ISA

Brown

J2EE

對應程序部分

表示層

表示層

客戶層

瀏覽器 HTML 頁面, XSL, 手機客戶端等

服務器表示層

JSP 及 ActionForm ,XML

控制 / 中介層

Controller 控制器及 Action

領域層

領域層

業務層

Javabeans / SessionBean /Session Facade

數據映射層

整合層

EntityBean / JDO / Hibernate / JDBC

數據層

數據源層

資源層

RDBMS 數據庫

J2EE的基本原則之一,是使得各個層的實現解除耦合或耦合最小化。最終實現可以任意的切換某個層的實現。

例如,在數據映射層,可以採用EJB的BMP,CMP,也可以採用Hibernate等O/RMapping,或者採用JDO。這由部署的環境來決定。


 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章