程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 了解MVC架構對於用Struts構建的強大的Web應用程序

了解MVC架構對於用Struts構建的強大的Web應用程序

編輯:JAVA編程入門知識
  Struts是雅加達的一個項目,它提供了一個方法,可以在一個Web應用程序中一起使用JavaServer
  Pages(jsp)和servlets。它的目的是要解決完全由JSP或完全由servlet實現的應用程序中的固有的問
  題。 例如,servelts可以生成Html頁面,但這麼做很麻煩。另一方面,JSP可以很輕易地用於傳統的
  HTML頁面,但JSP頁面有其它的缺點。非凡是,用JSP很難將內容同內容的顯示分開。 很輕易將Java 代
  碼同HTML混在一起,結果做出的東西又慢又難以維護。
  
  然而,因為JSP頁面輕易使用,所以它們成為用Java構建動態的Web應用程序的首選方法。除了輕易編程
  外,JSP頁面也被改進了,所以現在它們克服了以前的某些局限性。JavaBeans和標記庫只是在基礎的
  JSP技術上的幾個改進。這種類型的方法——JSP頁面單獨負責處理輸入的請求和回復客戶端——被稱為
  Model 1架構。
  
  JavaServer Pages是servlets的非凡情況,所以兩者可以一起工作以彌補每個的不足,這似乎是合乎邏
  輯的。這種類型的方法——你的Web架構包含截然不同的但又互聯的處理數據模式、顯示代碼和程序控
  制邏輯的JSP和servlet組件——被稱為Model 2架構,或Model-View-Controller(MVC)架構。
  
  為了使用Struts架構以及用JSP和servlets有效地編程,對MVC架構的了解是很必要的。Model 1和MVC架
  構的主要不同就是請求是在哪裡處理的。在Model 1架構中,請求通過JSP接收,主要通過JSP處理。如
  果JSP頁面需要來自任何其它應用程序組件的服務,如一個數據庫,那麼你就從頁面做適當的調用,把
  數據返回到頁面,安排數據的格式並顯示出來。你可以把一些代碼放到一個或多個JavaBean中,但是這
  麼做本身沒有將邏輯同顯示完全分離。
  
  MVC方法采用了JSP和servlet方法的最佳特性,使這兩種技術可以協同工作。明確的是,servlet是處理
  層(控制器)。Servlet接收請求,很像Model 1架構中JSP頁面所做的那樣,並確定如何滿足那些請
  求。這就意味著,servlet控制輸入的請求和輸出的回應。
  
  商業邏輯體現了MVC架構中的模式。商業邏輯代碼為頁面做處理。假如進入servlet的請求是一個數據庫
  查詢,servlet就將這個請求傳送到一個SQL調用或類似的數據庫代碼。假如請求是一個包括輸入信用卡
  號的購買請求,那麼事物處理代碼就接管了。在某種意義上,架構的模式部分是讓應用程序處於領先地
  位的全部原因。
  
  JSP頁面是顯示層(視圖),是用戶與應用程序交互的地方。它提供輸入並顯示結果。頁面不應該包括
  任何腳本。它只是將數據傳送到servlet,並接收和顯示返回的數據。
  
  該架構的優勢應該是很明顯的。首先,它將計算和顯示清楚地分開了。結果很理想,在JSP頁面上沒有
  出現處理過程,在servlet或商業邏輯中沒有數據格式。這種分離的另一個好處是Java程序員可以專注
  於servlet代碼,HTML編寫者可以專注於JSP。 第二點,控制器servlet做頁面上的所有的決定。 在你
  的頁面和邏輯中不會出現任何決策。這就提高了一個應用程序的性能和可擴展性,因為請求可以被導向
  架構的不同的組件,甚至是不同的服務器。
  
  
  運用MVC架構
  
  MVC架構沒有必要成為用於所有Java應用程序的最佳方法。 如你想象的那樣,它在預備和編碼時往往很
  復雜——這對簡單的應用程序來說是沒必要的。當頁面導航相對來說比較簡單和固定,而且應用程序中
  的頁面結構可以由一個簡單的目錄結構治理時, Model 1架構仍然是最好的方法。這些應用程序往往將
  頁面流動信息嵌入到頁面間的鏈接中。(JSP中出現forward()就告訴你,在該頁中有嵌入的邏輯,讓你
  對顯示下一頁作出決定。)對於對流量或可擴展性需求有限的靜態的應用程序來說,標准的JSP模式仍
  然是一個可行的選擇方案。
  
  在一些情況下,你可能想把一個JSP應用程序移植到MVC架構中。例如,你可能開始時用的是Model 1,
  簡單的JSP架構,隨著你的需求的增加,你會發現維護起來太復雜或太難了。假如你花很長的時間對應
  用程序做相對來說較簡單的修改,或者假如你經常在你的代碼中發現bug,那麼你的JSP導向的應用程序
  也許就不再是合適的方法了。
  
  隨著應用程序的發展和變化,頁面的流動和商業邏輯也增加了。應用程序變得難以維護,因為頁面流動
  邏輯跨多個頁面分布,而且商業邏輯可能開始存在於未計劃的地方。從Model 1轉到MVC的最佳時機就是
  當這些類型的維護問題出現的時候。
  
  你也可以預先計劃將你的應用程序從一個架構移植到另一個架構。當你的應用程序中的JSP頁面包含腳
  本元素,定制標記或javascript來執行一個forward()操作時,你可能想調整你最初的設計,變成一種
  用MVC架構的設計。
  
  Refactoring用在這兒是個不錯的術語。它指的是以一種高度嚴謹的方式重建代碼結構的一種技術。當
  你的代碼變得難以理解、修改和調試時,你通常就開始考慮調整了。你可以用幾種方式來調整代碼:你
  可以簡單地重新命名變量和方法,或者將部分代碼移植到不同類型的執行模式中。更多的關於調整及其
  技術方面的信息,請訪問Martin Fowler的網站www.refactoring.com 或者閱讀他寫的書
  Refactoring: Improving the Design of Existing Code。
  
  在許多情況下,一開始就選擇MVC架構是很有意義的,例如你的應用程序是為廣泛的企業應用而設計
  的,或者在幾年內,你的應用程序可能擴展到一個相當高的流量。 設計一個MVC架構需要有深謀遠慮。
  大多數程序員發現寫邏輯腳本或JavaBeans,以及用HTML顯示很輕易。當你設計一個MVC架構時,你必須
  首先進行一個完整的設計。這就意味著,分析需要處理的請求的類型,確定哪些組件(JavaBean、數據
  庫或其它servlets)將處理這些請求,以及對那些請求的回應是如何顯示給用戶的。 該設計的要害就
  是請求和數據的流動性。為MVC架構設計應用程序組件只是對你現在用JSP和servlets所做工作的擴展。
  面臨的挑戰就是構建一個servlet,它接收請求並把那些請求分到應用程序的不同的組件。將一個數據
  庫請求傳送到一個數據庫,或將一個處理請求傳送到一個JavaBean是很輕易的,但是假如一個請求包含
  這兩種元素,會怎樣呢?或者假如請求的性質在一些處理出現前不能確定,又怎樣呢?
  
  
  Struts 構架
  
  該挑戰使我們又回到Struts構架。Struts提供了一個實現MVC架構的高度自動化的方式。它的結構實現
  了MVC,並包括一個控制器servlet、一組JSP頁面和應用程序的商業邏輯。控制器將用戶請求打包,並
  把它們導向架構中的其他對象。
  
  Struts構架是圍繞一個ActionMapping 結構的。控制器用 ActionMapping 把HTTP消息形式的用戶請求
  轉換成應用程序的動作。ActionMapping指定請求的路徑、計劃處理請求的對象以及任何服務該請求需
  要的其它信息。ActionMapping創建了一個 Action 對象來處理請求。一旦Action對象完成了一個任
  務,它就通過在一個JSP頁面上寫結果來直接回應一個用戶請求,或者它可以讓一個應用程序流動到其
  它地方做回應。
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved