?? javaserver pagestm 白皮書.txt
字號:
JSP頁面使用JSP指示將指令傳遞到JSP引擎。這其中包括:
JSP頁面指示傳遞頁面相關(guān)的信息,例如緩沖區(qū)和線程信息或者出錯處理。
語言指示指定腳本語言,以及所有的擴展。
包含指示(在上面例子中有顯示)可以被用來在頁面中包含一個外部的文檔。一個好的例子是著作權(quán)文檔或者公司信息文檔——在一個集中地點保存該文檔并且在頁面中包含比在各個JSP頁面中更新要容易些。當(dāng)然,被包含的文件也可能是另一個JSP文件。
標(biāo)識庫指示指出頁面可以調(diào)用的一個客戶標(biāo)識庫。
JSP標(biāo)識
絕大多數(shù)JSP處理將通過與JSP相關(guān)的基于XML的標(biāo)識完成。JSP 1.0中包含大量標(biāo)準(zhǔn)標(biāo)識,這些標(biāo)識作為核心標(biāo)識包括:
jsp:useBean 這個標(biāo)識聲明對一個JavaBeans組件實例的使用。如果該組件的實例不存在,JavaBeans組件將實例化和注冊這個標(biāo)識。
jsp:setProperty 這個標(biāo)識在組件的實例中設(shè)置一個屬性的值。
jsp:getProperty 這個標(biāo)識獲取一個組件的實例的屬性值,將其轉(zhuǎn)化為字符串,并且將它放入隱含對象"out"中。
jsp:include
jsp:forward
1.1版本將包含更多的標(biāo)準(zhǔn)標(biāo)識。
標(biāo)識的好處在于它們易于在應(yīng)用程序間使用和共享?;跇?biāo)識的語法的真正威力來自于客戶標(biāo)識庫的開發(fā),使得工具供應(yīng)商或其他人員能夠為特定的要求創(chuàng)建和分派標(biāo)識。
腳本元件
JSP頁面可以在頁面中包含小的腳本,稱之為小腳本(scriptlets)。小腳本是一個代碼片段,在請求的處理過程中被執(zhí)行。小腳本可以和頁面中的靜態(tài)元件組合(正如上面的例子一樣)起來創(chuàng)建動態(tài)生成的頁面。
腳本在<%和%>標(biāo)志中被描述。在這對標(biāo)志中的所有東西都會被腳本描述語言引擎執(zhí)行,在我們的例子中是主機上的Java虛擬機。
JSP規(guī)范支持所有常用的腳本元件,包括表達式和聲明。
JSP頁面的應(yīng)用模型
JSP頁面由JSP引擎執(zhí)行,引擎安裝在Web服務(wù)器或者使用JSP的應(yīng)用服務(wù)器上。JSP引擎接受客戶端對JSP頁面的請求,并且生成JSP頁面給客戶端的響應(yīng)。
JSP頁面通常被編譯成為Java Servlet。后者是一個標(biāo)準(zhǔn)的Java擴展,在www.java.sun.com站點有更詳細的描述。頁面開發(fā)人員能夠訪問全部的Java應(yīng)用環(huán)境,以利用Java技術(shù)的擴展性和可移植性。
當(dāng)JSP頁面第一次被調(diào)用時,如果它還不存在,就會被編譯成為一個Java Servlet類,并且存儲在服務(wù)器的內(nèi)存中。這使得在接下來的對該頁面的調(diào)用有非??斓捻憫?yīng)。(這避免了CGI-BIN為每個HTTP請求生成一個新的進程的問題,或是服務(wù)器端引用所引起的運行時語法分析。)
JSP頁面可以包含在多種不同的應(yīng)用體系結(jié)構(gòu)或者模型中。JSP頁面可以用于由不同協(xié)議、組件和格式所組成的聯(lián)合體中。下面的小節(jié)描述了一些可能發(fā)生的情況。
一個簡單應(yīng)用
在一個簡單實現(xiàn)中,瀏覽器直接調(diào)用JSP頁面,JSP頁面自己生成被請求的內(nèi)容(可能會調(diào)用JDBC直接從數(shù)據(jù)庫中獲取信息)。JSP頁面能夠調(diào)用JDBC或者Java BlendTM組件來生成結(jié)果,并且創(chuàng)建標(biāo)準(zhǔn)的HTML,作為結(jié)果發(fā)送回瀏覽器。
這個模型基本上用JSP頁面(編譯成為Java Servlet)代替了CGI-BIN概念。這個方法擁有下列優(yōu)點:
簡單而快速地編程
頁面作者可以很容易地根據(jù)請求和資源狀態(tài)生成動態(tài)內(nèi)容
這個結(jié)構(gòu)在許多應(yīng)用上工作良好,但不能擴展到大量的基于Web的并發(fā)客戶訪問稀少的企業(yè)資源,因為每個客戶必須建立或者共享一個到可用內(nèi)容資源的連接。例如,如果JSP頁面訪問數(shù)據(jù)庫,可能生成許多到數(shù)據(jù)庫的連接,這將影響到數(shù)據(jù)庫的性能。
使用Java Servlet的一個靈活的應(yīng)用
在另一種可能的配置中,基于Web的客戶機可能直接對Java Servlet進行請求,Servlet生成動態(tài)內(nèi)容,將結(jié)果捆綁到一個結(jié)果對象中并且調(diào)用JSP頁面。JSP頁面從該對象中訪問動態(tài)內(nèi)容,并且將結(jié)果(例如HTML)發(fā)送回瀏覽器。
這個方法創(chuàng)建了更多的可以為應(yīng)用程序間共享的可重用的組件,并且可以作為更大的應(yīng)用的一部分完成。但是,在處理如數(shù)據(jù)庫一樣的企業(yè)資源的連接時,還是存在擴展性問題。
采用企業(yè)級JavaBean技術(shù)的可擴展處理
JSP頁面也可以作為企業(yè)級JavaBean(EJB)體系結(jié)構(gòu)中的一個中間層。在這種情況下,JSP頁面和后端資源通過EJB組件進行交互。
EJB組件管理對后端資源的訪問,從而為眾多的并發(fā)使用者提供可擴展的性能。對于電子商務(wù)或者其他應(yīng)用,EJB管理交易和潛在的安全性。這將簡化JSP頁面。這個模型將為Java 2企業(yè)版(J2EE)平臺所支持。
JSP頁面與XML技術(shù)的集成
JSP頁面可以用于生成XML和HTML頁面。
對于簡單的XML生成,開發(fā)人員可以包含XML標(biāo)識和JSP頁面的靜態(tài)模板部分。對于動態(tài)XML生成,使用基于服務(wù)器的對象和生成XML輸出的客戶化標(biāo)識。
JSP頁面與XML工具不是不兼容的。盡管Sun在設(shè)計JSP規(guī)范時使得JSP頁面即使手工操作對于創(chuàng)作者而言也是很容易的,JSP規(guī)范同時也提供了一個機制以便于創(chuàng)建任意JSP頁面的一個XML版本。通過這種方法,XML工具能夠創(chuàng)作和操作JSP頁面。
通過將JSP標(biāo)識和元件轉(zhuǎn)換為與XML兼容的對等物,可以使用基于XML的工具來操作JSP頁面。例如,腳本可以被包含在<%和%>之中,或者基于XML標(biāo)志的<jsp:scriptlet>和</jsp:scriptlet>中。事實上,經(jīng)過下面這樣簡單的幾步將JSP頁面轉(zhuǎn)換為XML頁面是可能的,這些步驟包括:
增加一個JSP根元件
將元件和指示轉(zhuǎn)換為XML兼容的對等物
為頁面上其他的元件(通常非JSP)創(chuàng)建CDATA元件
通過這個與XML兼容的方法,創(chuàng)建HTML頁面的設(shè)計者仍然擁有一個快速創(chuàng)建動態(tài)Web頁面的易用環(huán)境,同時,基于XML的工具和服務(wù)可以與JSP頁面集成并且和JSP兼容的服務(wù)器一起工作。
JSP技術(shù)的未來
JSP技術(shù)被設(shè)計為一個開放的,可擴展的建立動態(tài)Web頁面的標(biāo)準(zhǔn)。開發(fā)人員可以使用JSP頁面來創(chuàng)建可移植的Web應(yīng)用,在不同的Web和應(yīng)用服務(wù)器上為不同的場合所運行,而不論采用什么適合本身場合和需要的創(chuàng)建工具。
通過與業(yè)界領(lǐng)袖的合作,Sun保證JSP規(guī)范是開放的和可移植的??梢允褂萌魏慰蛻魴C和服務(wù)器平臺,在任何地方編寫和部署它們。將來,工具供應(yīng)商和其他廠商將通過為專門的功能提供客戶化的標(biāo)識庫而擴展平臺的功能。
JSP規(guī)范的1.0版本是通向動態(tài)Web頁面生成的一個開放的工業(yè)標(biāo)準(zhǔn)方法的第一步。1.0版本通過一個核心標(biāo)識集、隱含對象以及開始創(chuàng)建動態(tài)Web頁面所需的基本功能構(gòu)成了該方法的基礎(chǔ)。已經(jīng)有幾個Web服務(wù)器,應(yīng)用服務(wù)器和開發(fā)工具供應(yīng)商正在為他們的產(chǎn)品添加JSP1.0的支持,這樣在業(yè)界已經(jīng)擁有了最初的、立即的支持。
在1999晚些時候?qū)⑼瓿傻?.1版本,通過更多的XML支持、客戶化標(biāo)識、以及與J2EE的集成而擴展這個版本。并且供應(yīng)商們可能會有選擇地擴展和擴充在JSP規(guī)范中基本的、必需的功能。JSP引擎能夠強有力地支持多種腳本語言和對象模型。在業(yè)界擴充和使用JSP技術(shù)能力的同時,也向Sun承諾將保證JSP技術(shù)保持平臺和服務(wù)器間固有的可移植性。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -