天天看點

Chap3 JSP 概述

Chap3 JSP 概述
3.1 servlet存在的問題
(1)應用程式較大時(多個頁面,使用資料庫等外部資源,多個選項,支援多種類型的client),設計網站的方式對于能否适應新需求、能否演化非常重要。Jsp能适用于簡單到複雜的web應用。
(2)純基于servlet的途徑存在下列問題:1>需要全面的java程式設計知識來開發和維護應用程式的各個方面,因為處理代碼和html元素攪在了一起;2>改變程式的外觀或需要支援新的client類型,需要更新并重新編譯servlet代碼;3>設計程式界面時,很難利用頁面開發工具。需要将生成的html手工添加到servlet代碼中,效率低,易出錯。
(3)由純servlet轉變為:Servlet負責請求處理;jsp負責表示(presentation);JavaBean負責業務邏輯。
(4)分工:java程式員實作請求處理(servlet)和業務邏輯(JavaBean);頁面作者實作使用者界面。
(5)上面的開發模型,使得頁面作者即使不會程式設計,也能開發出具有很多動态特性的web應用。因為他可以利用jsp标準actions和jstl庫,還能利用開源或商業性的java元件。
3.2 JSP分解
(1)JSP頁面包括JSP元素和template text。頁面中隻要不是JSP元素,就是template text。Template text可以是任何文本,不光可以是html;通常直接傳遞給浏覽器。
(2)處理jsp頁面請求時,将template text + JSP元素産生的動态内容一起,作為response傳給浏覽器
3.3 JSP處理

(1)JSP容器:負責截獲對JSP頁面的請求。首先,将JSP頁面轉變成servlet(即JSP page implementation class);然後,編譯serlet class。該階段即translation phase。[注]一般是收到對頁面的第一次請求時,啟動translation phase。可以采用precompilation。

 JSP容器還負責調用産生的servlet。即“請求處理階段”。除了第一次請求,以後的請求都隻需要經曆“請求處理階段”。

(2)通常将JSP容器實作為一個servlet。Servlet容器和JSP容易通常合并為一個web容器。
(3)可見,jsp事實上是另外一種寫servlet的方法。除了translation phase,JSP頁面就像一個servlet一樣被處理。
3.3.1 JSP元素
(1)三類jsp元素:directive,action,scripting
(2)directive元素:指定頁面自身的資訊,這些資訊對于各次請求都是相同的。包括:<%@ page…>,<%@ include …>,<%@ taglib ...>
(3)标準action元素:對于每次請求相關的資訊,執行一些action。包括:<jsp: usebean>,<jsp: getProperty>,<jsp: setProperty>,<jsp: include>,<jsp: forward>,<jsp: param>,<jsp: plugin>
(4)自定義的action元素:通過jsp規範包含的一個java api實作,可擴充jsp語言。
(5)JSTL(JSP standard tag library)就是一種上述擴充。它由sun公司制定,可用于jsp程式常用的處理,例如條件處理、資料庫通路等。
(6)除了jstl,還可以通過擴充api自定義action元素。
(7)scripting元素:可用于在jsp頁面中添加小段(java)代碼。不鼓勵使用;如果頁面中大量使用代碼,會造成維護問題。
(8)javabean元件:遵循特定編碼規範的java類;通常用于描述應用程式實體資訊(例如客戶、訂單)的容器。
3.4 使用MVC,進行JSP應用程式設計
(1)MVC設計模型(Model-View-Controller)
(2)在伺服器程式中,通常把程式分成3部分:業務邏輯;表示;請求處理
(3)業務邏輯:表示如何處理資料
(4)表示:應用程式的資料如何顯示給客戶
(5)請求處理:如何把“業務邏輯”和“表示”聯系在一起。
(6)MVC中,Model對應業務邏輯和資料;View對應“表示”;Controller 對應請求處理
(7)使用MVC模型的原因:1>應用程式的Model(應用程式+邏輯)是程式中最穩定的部分,而View(表示)卻經常變化;2>需要把資料以不同的語言、或把資料的不同部分顯示給不同的使用者,每個client都需要不同的顯示格式。

繼續閱讀