麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

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

2019-11-17 06:23:35
字體:
來源:轉載
供稿:網(wǎng)友

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色高清视频网站 | 91国内精品久久久久免费影院 | 97视频| 久久精品成人免费国产片桃视频 | 黄色试看视频 | 国产乱xxxx| 成人毛片视频免费 | 美女视频网站黄色 | 国产在线观看 | 久久久久中文字幕 | 亚洲第一色片 | a级黄色片视频 | 欧美一级精品 | 成人不卡免费视频 | 色成人在线 | 91伊人久久 | 欧美黄在线 | 国产精品美女一区二区 | 欧美成人高清视频 | 欧美日韩亚洲精品一区二区三区 | 成人一级片毛片 | 国产精品亚洲欧美一级在线 | 亚洲五码在线观看视频 | 久久精品亚洲精品国产欧美kt∨ | 欧美一级高潮 | 亚州精品国产 | 18欧美性xxxx极品hd | 久久69精品久久久久久国产越南 | 国产99久久久国产精品 | 国产羞羞网站 | 国产亚洲精品久久久久久久久 | 国产羞羞视频在线免费观看 | 12av毛片 | 久久96国产精品久久久 | 韩国一大片a毛片 | 99精彩视频在线观看 | 99视频观看| 精品亚洲一区二区三区 | 亚洲婷婷日日综合婷婷噜噜噜 | 99r国产精品 | 亚洲精品欧美在线 |