2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  JSP 概覽 </b></p><p>  JSP是一種用于Web應(yīng)用程序開發(fā)的最新的Java技術(shù),它是建立在servlet 技術(shù)基礎(chǔ)之上的。盡管servlet 的功能在很多方面來說都很強大,但它通常屬于程序員專有的領(lǐng)域。在本章中,我們將介紹JSP 技術(shù)可以解決哪些問題,對JSP 頁面的剖析,servlet 和JSP 之間的關(guān)系,以及服務(wù)器處理JSP 頁面的方式

2、等。</p><p>  在任何Web 應(yīng)用程序中,都有一個服務(wù)器上的程序來處理請求并產(chǎn)生應(yīng)答。對于簡單的單頁式應(yīng)用程序,例如一個在線公告牌,你并不需要過多地考慮代碼的設(shè)計,而且所有的邏輯都可以堆在一個程序中。但當應(yīng)用程序變得越來越大時(如跨越了多個頁面,使用數(shù)據(jù)庫之類的外部資源,并為更多類型的客戶提供了更多的選項和支持),情況就完全不一樣了。站點的設(shè)計方式直接關(guān)系到它適應(yīng)新需求的能力以及繼續(xù)改進的能力。令人高興

3、的是,JSP 技術(shù)可以作為所有類型Web 應(yīng)用程序的一個重要部分,從最簡單的到最復(fù)雜的應(yīng)用程序都是如此。因此,本章還將介紹推薦使用的Web應(yīng)用程序設(shè)計模型的基本概念,以及JSP和其他Java 技術(shù)在這個模型中所扮演的不同角色。</p><p>  servlet 所帶來的問題</p><p>  在許多基于Java servlet 的應(yīng)用程序中,處理請求和產(chǎn)生應(yīng)答是由同一個servlet

4、類來執(zhí)行的。例3-1 顯示了servlet 通常的外觀:</p><p>  例3-1:典型的servlet 類</p><p>  public class OrderServlet extends HttpServlet {</p><p>  public void doGet((HttpServletRequest request,</p>&

5、lt;p>  HttpServletResponse response)</p><p>  throws ServletException, IOException {</p><p>  response.setContentType("text/html");</p><p>  PrintWriter out = response.

6、getWriter();</p><p>  if (isOrderInfoValid(request)) {</p><p>  saveOrderInfo(request);</p><p>  out.println("<html>");</p><p>  out.println(" <

7、head>");</p><p>  out.println(" <title>Order Confirmation</title>");</p><p>  out.println(" </head>");</p><p>  out.println(" <

8、body>");</p><p>  out.println(" <h1>Order Confirmation</h1>");</p><p>  renderOrderInfo(request);</p><p>  out.println(" </body>");<

9、/p><p>  out.println("</html>");</p><p><b>  }</b></p><p><b>  ...</b></p><p>  如果你不是程序員,也不用為這些代碼中的細節(jié)擔心。關(guān)鍵的一點是,servlet 包含了請求的處理以及商務(wù)

10、邏輯(通過像isOrderInfoValid()和saveOrderInfo()這樣的方法來實現(xiàn)),并且產(chǎn)生了應(yīng)答的HTML代碼,這些代碼是通過調(diào)用println()函數(shù)而直接嵌入在servlet代碼中的。一個更加結(jié)構(gòu)化的servlet應(yīng)用程序可以將處理過程分成各個不同的部分,封裝在各種可重用的工具類中,也可能使用一個單獨的類庫來產(chǎn)生應(yīng)答中的實際的HTML元素。盡管如此,純servlet 的方案還是存在以下一些問題:</p>

11、<p>  ● 開發(fā)和維護應(yīng)用程序的所有部分需要有深厚的Java編程知識,因為處理代碼和HTML 元素是交織在一起的。</p><p>  ● 改變應(yīng)用程序的外觀和風格,或者加入對某種新類型客戶機(如WML客戶機)的支持時,都需要更新并重新編譯servlet 代碼。</p><p>  ● 很難利用網(wǎng)頁開發(fā)工具的優(yōu)勢來設(shè)計應(yīng)用程序界面。如果使用這些工具來開發(fā)網(wǎng)頁布局的話,生成

12、的HTML 代碼必須被手工嵌入到servlet 代碼中,這個過程既耗時又容易出錯,而且極度枯燥乏味。</p><p>  引入JSP 可以將請求處理和商務(wù)邏輯與外觀呈現(xiàn)分離開來,如圖3-1 所示。此時并不是將HTML嵌入到代碼中,而是將所有靜態(tài)HTML放到JSP 頁面中,就像一個通常的網(wǎng)頁一樣,然后加入一些JSP 元素來產(chǎn)生頁面的動態(tài)部分。對請求的處理工作可以留給servlet 程序員來做,商務(wù)邏輯則可以由Jav

13、aBeans 和EJB 組件來處理。</p><p>  圖3-1:將請求處理、商務(wù)邏輯和外觀呈現(xiàn)分離</p><p>  正如前面提到的那樣,將請求處理和商務(wù)邏輯與外觀呈現(xiàn)分開后,允許我們將開發(fā)任務(wù)分派給擁有不同技術(shù)的人們。Java 程序員負責實現(xiàn)請求處理和商務(wù)邏輯部分,網(wǎng)頁設(shè)計師則實現(xiàn)用戶界面,而且這兩組人員都可以使用手邊最好用的工具軟件來完成任務(wù)。其結(jié)果就是我們得到了更為多產(chǎn)的開發(fā)過

14、程。這也使得我們能夠單獨改變應(yīng)用程序的某個部分,例如修改商務(wù)規(guī)則,而不必觸及用戶界面。</p><p>  即便對于一名獨立工作且沒有編程技術(shù)的網(wǎng)頁設(shè)計師來說,這個模型也有著明顯的優(yōu)點。網(wǎng)頁設(shè)計師可以使用JSP標準行為和JSTL庫以及開源組織或商業(yè)公司提供的Java 組件,來開發(fā)擁有許多動態(tài)特性的Web 應(yīng)用程序。</p><p><b>  JSP 處理過程</b>

15、</p><p>  正如Web 服務(wù)器需要一個servlet 容器來提供對servlet 的接口一樣,服務(wù)器同樣也需要一個JSP 容器來處理JSP 頁面。JSP 容器負責解釋對JSP 頁面的請求。為了處理頁面中所有的JSP 元素,容器首先要把JSP 頁面轉(zhuǎn)化成servlet[稱為“JSP 頁面實現(xiàn)類(JSP Page implementation class)”]。這種轉(zhuǎn)換是非常直接的,所有的模板文本都被轉(zhuǎn)換成

16、與例3-1 中所示的手工編碼的servlet相類似的println()語句,而且所有的JSP 元素都被轉(zhuǎn)換成實現(xiàn)相應(yīng)動態(tài)行為的Java 代碼。然后容器再編譯servlet類。</p><p>  將JSP 頁面轉(zhuǎn)換為servlet 并編譯該servlet,這就是翻譯階段(translation phase)。當?shù)谝淮问盏綄δ硞€頁面的請求時,JSP容器會自動開始對這個頁面的翻譯階段。當然,翻譯階段需要一點時間來完成

17、,所以用戶會注意到當某個JSP 頁面被第一次請求時,會有一點延遲。翻譯階段也可以被顯式地啟動,這稱為JSP 頁面的預(yù)編譯(precompilation)。對JSP 頁面進行預(yù)編譯可以避免延遲問題。在第十六章中將詳細介紹預(yù)編譯。</p><p>  JSP容器還負責調(diào)用JSP頁面實現(xiàn)類(生成的servlet),以處理每個請求并生成應(yīng)答。這個階段被稱為“請求處理階段(request processing phase)

18、”。這兩個階段如圖3-3 所示。</p><p>  圖3-2:JSP 頁面翻譯階段和請求處理階段</p><p>  只要JSP 頁面保持不變,任何后續(xù)的請求都會直接進入請求處理階段(也就是說,容器僅執(zhí)行類文件)。當JSP 頁面被修改后,后續(xù)請求將再次通過翻譯階段,然后才進入請求處理階段。</p><p>  JSP 容器通常是作為一種servlet 來實現(xiàn)的,并

19、被配置為處理所有對頁面的請求。事實上,servlet 容器和JSP 容器這兩種容器通常都組合在一個名為web container 的軟件包中。所以,通過這種方式,JSP 頁面實際上是編寫servlet 的另外一種方式,而你卻不必是一名Java 編程高手。而且,除了翻譯階段,JSP 頁面的處理過程與常見的servlet完全相同:載入一次后多次重復(fù)執(zhí)行,直到服務(wù)器關(guān)閉為止。作為一種自動生成的servlet,JSP 頁面繼承了第二章中所講的s

20、ervlet 的所有優(yōu)點:平臺和廠商獨立性,集成化,高效性,可縮放性,健壯性和安全性。</p><p><b>  JSP 元素</b></p><p>  JSP 有三種類型的元素:指令元素(directive element)、行為元素(action element)和腳本元素(scripting elment)。</p><p><

21、b>  指令元素</b></p><p>  表3-1 所示的指令元素用于指定關(guān)于頁面本身的一些信息,這些信息在各個頁面請求間保持不變。這些信息內(nèi)容包括:是否需要會話跟蹤,對緩沖的要求,以及用于報告錯誤的頁面名稱,等等。</p><p><b>  表3-1:指令元素</b></p><p>  JavaBeans 組件<

22、;/p><p>  JSP 元素,例如行為元素和腳本元素,經(jīng)常用來與JavaBeans 一起使用。簡單地說,一個JavaBeans 組件就是一個用特定的編碼約定編譯的Java 類。JavaBeans 組件通常用作容納描述應(yīng)用程序中某類實體(例如客戶或訂單)的信息的容器。</p><p>  使用MVC 設(shè)計JSP 應(yīng)用程序</p><p>  JSP 技術(shù)可以應(yīng)用于各種

23、事務(wù),從最簡單的Web 應(yīng)用程序,例如一個在線電話簿或員工休假安排,到功能齊全的企業(yè)級應(yīng)用程序,例如人力資源應(yīng)用程序或復(fù)雜的在線購物站點。當然,在各種應(yīng)用中,JSP 占的比例大小不一。在這一節(jié)中,我們將介紹一種同時適用于簡單應(yīng)用程序和復(fù)雜應(yīng)用程序的設(shè)計模型, 稱為MVC(MODEL-View-Controller,模型-視圖-控制器)。MVC 首先是由Xerox(施樂)公司在80 年代后期發(fā)表的一系列論文中提出的。使用MVC 的關(guān)鍵點是

24、將邏輯分成三個各自獨立的單位:模型、視圖和控制器。在一個服務(wù)器應(yīng)用程序中,我們通常將應(yīng)用程序分成以下三部分:商務(wù)邏輯、外觀呈現(xiàn)和請求處理。術(shù)語“商務(wù)邏輯(business logic)”指的是對應(yīng)用程序的數(shù)據(jù)進行處理的規(guī)則,例如客戶、產(chǎn)品、訂單信息等數(shù)據(jù)?!巴庥^呈現(xiàn)(presentation)”指的是應(yīng)用程序數(shù)據(jù)是如何展示在用戶面前的,例如位置、字體和尺寸等。最后,“請求處理(request processing)”是指將商務(wù)邏輯和外觀

25、呈現(xiàn)聯(lián)系起來的部分。如果用MVC的術(shù)語來說,模型對應(yīng)著商務(wù)邏輯和數(shù)據(jù),視圖對應(yīng)外觀呈現(xiàn),控制器</p><p>  為什么要對JSP 使用這種設(shè)計模型?答案主要在于前兩個元素。應(yīng)用程序的數(shù)據(jù)結(jié)構(gòu)和邏輯(也就是模型)通常是一個應(yīng)用程序中最穩(wěn)定的部分,但是這些數(shù)據(jù)的表現(xiàn)形式(也就是視圖)卻是經(jīng)常改變的。只要看看那些站點為了跟上最新的網(wǎng)頁設(shè)計時尚而不斷更新門面的過程就知道了。然而,它們所表現(xiàn)的數(shù)據(jù)卻是保持不變的。<

26、;/p><p>  另一個說明為什么要把商務(wù)邏輯和外觀呈現(xiàn)分開的常見示例是,你可能需要用不同的語言來表現(xiàn)數(shù)據(jù),或者向內(nèi)部和外部用戶提供不同的數(shù)據(jù)子集。通過新型的設(shè)備來訪問數(shù)據(jù),例如使用移動電話和PDA(Personal Digital Assistant,個人數(shù)字助理)是最新的趨勢。每種類型的客戶都要求有自己的表現(xiàn)格式。因此,順理成章,將商務(wù)邏輯和外觀呈現(xiàn)分開可以更容易地根據(jù)需求的改變來改進應(yīng)用程序,并在不觸動商務(wù)邏

27、輯的情況下開發(fā)新的外觀界面。</p><p>  本書中的絕大部分示例都使用了MVC模型。在第二部分中,JSP頁面既被用作控制器又被用作視圖,JavaBeans 組件被用作模型。第五章至第九章的示例使用一個單獨的JSP 頁面來處理一切事情,而第十章至第十三章將指導(dǎo)讀者如何為控制器和視圖使用單獨的頁面,從而使得整個應(yīng)用程序更易于維護?,F(xiàn)實世界中許多類型的應(yīng)用程序都可以使用這種方式來進行開發(fā),但更重要的是,這種方式使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論