?? javaserver pagestm 白皮書.txt
字號:
作者:whitefox
email: whitefox.jiang@corp.elong.com
日期:00-7-4 下午 07:33:54
JavaServer PagesTM 白皮書
JavaServer PagesTM (JSP)技術為創建顯示動態生成內容的Web頁面提供了一個簡捷而快速的方法。JSP技術的設計目的是使得構造基于Web的應用程序更加容易和快捷,而這些應用程序能夠與各種Web服務器,應用服務器,瀏覽器和開發工具共同工作。
本白皮書提供了JSP技術的全面概述,描述了其開發背景以及這項技術的總體目標。同時,在一個簡單示例中,還描述了一個基于JavaTM技術的頁面的關鍵組成部分。
開發基于Web的應用程序:背景
在萬維網短暫的歷史中,它已經從一個大部分顯示靜態信息的網絡演化到對股票進行交易和進行購書操作的一個基礎設施。在各種各樣的應用程序中,對于可能使用的基于Web的客戶端,看上去沒有任何限制。
基于瀏覽器客戶端的應用程序比傳統的基于客戶機/服務器的應用程序有幾個好處。這些好處包括幾乎沒有限制的客戶端訪問和極其簡化的應用程序部署和管理(要更新一個應用程序,管理人員只需要更改一個基于服務器的程序,而不是成千上萬的安裝在客戶端的應用程序)。這樣,軟件工業正迅速地向建造基于瀏覽器客戶端的多層次應用程序邁進。
這些快速增長的精巧的基于Web的應用程序要求開發技術上的改進。靜態HTML對于顯示相對靜態的內容是不錯的選擇;新的挑戰在于創建交互的基于Web的應用程序,在這些程序中,頁面的內容是基于用戶的請求或者系統的狀態,而不是預先定義的文字。
對于這個問題的一個早期解決方案是使用CGI-BIN接口;開發人員編寫與接口相關的單獨的程序,以及基于Web的應用程序,后者通過Web服務器來調用前者。這個方案有著嚴重的擴展性問題——每個新的CGI要求在服務器上新增一個進程。如果多個用戶并發地訪問該程序,這些進程將消耗該Web服務器所有的可用資源,并且系統性能降低到極其低下的地步。
某些Web服務器供應商已經嘗試通過為他們的服務器提供“插件”和API來簡化Web應用程序的開發。這些解決方案是與特定的Web服務器相關的,不能解決跨多個供應商的解決方案的問題。例如,微軟的Active Server PagesTM(ASP) 技術使得在Web頁面上創建動態內容更加容易,但是也只能工作在微軟的IIS和Personal Web Server上。
還存在其他的解決方案,但是都不能使一個普通的頁面設計者能夠輕易地掌握。例如,象Java Servlets這樣的技術就可以使得用Java語言編寫交互的應用程序的服務器端的代碼變得容易。一個Java Servlets就是一個基于Java技術的運行在服務器端的程序(與Applet不同,后者運行在瀏覽器端)。開發人員能夠編寫出這樣的Servlet,以接收來自Web瀏覽器的HTTP請求,動態地生成響應(可能要查詢數據庫來完成這項請求),然后發送包含HTML或XML文檔的響應到瀏覽器。
采用這種方法,整個網頁必須都在Java Servlet中制作。如果開發人員或者Web管理人員想要調整頁面顯示,就不得不編輯并重新編譯該Java Servlet,即使在邏輯上已經能夠運行了。采用這種方法,生成帶有動態內容的頁面仍然需要應用程序的開發技巧。
很顯然,目前所需要的是一個業界范圍內的創建動態內容頁面的解決方案。這個方案將解決當前方案所受到的限制,即:
能夠在任何Web或應用程序服務器上運行
將應用程序邏輯和頁面顯示分離
能夠快速地開發和測試
簡化開發基于Web的交互式應用程序的過程
JavaServer Pages (JSP)技術就是被設計用來滿足這樣的要求的。JSP規范是Web服務器、應用服務器、交易系統、以及開發工具供應商間廣泛合作的結果。太陽微系統公司(Sun Microsystems Inc.)開發出這個規范來整合和平衡已經存在的對Java編程環境(例如,Java Servlet和JavaBeansTM)進行支持的技術和工具。其結果是產生了一種新的、開發基于Web應用程序的方法,給予使用基于組件應用邏輯的頁面設計者以強大的功能。
Web應用開發的JavaServer Pages技術方法
在開發JSP規范的過程中,太陽微系統公司(Sun Microsystems Inc.)與許許多多主要的Web服務器、應用服務器和開發工具供應商,以及各種各樣富有經驗的開發團體進行合作。其結果是找到了一種為應用和頁面開發人員平衡了可移植性和易用性的開發方法。
JSP技術在多個方面加速了動態Web頁面的開發:
將內容的生成和顯示進行分離
使用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面。使用JSP標識或者小腳本來生成頁面上的動態內容(內容是根據請求來變化的,例如請求帳戶信息或者特定的一瓶酒的價格)。生成內容的邏輯被封裝在標識和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務器端運行。如果核心邏輯被封裝在標識和Beans中,那么其他人,如Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的生成。
在服務器端,JSP引擎解釋JSP標識和小腳本,生成所請求的內容(例如,通過訪問JavaBeans組件,使用JDBCTM技術訪問數據庫,或者包含文件),并且將結果以HTML(或者XML)頁面的形式發送回瀏覽器。這有助于作者保護自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。
強調可重用的組件
絕大多數JSP頁面依賴于可重用的,跨平臺的組件(JavaBeans或者Enterprise JavaBeansTM組件)來執行應用程序所要求的更為復雜的處理。開發人員能夠共享和交換執行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團體所使用。基于組件的方法加速了總體開發過程,并且使得各種組織在他們現有的技能和優化結果的開發努力中得到平衡。
采用標識簡化頁面開發
Web頁面開發人員不會都是熟悉腳本語言的編程人員。JavaServer Page技術封裝了許多功能,這些功能是在易用的、與JSP相關的XML標識中進行動態內容生成所需要的。標準的JSP標識能夠訪問和實例化JavaBeans組件,設置或者檢索組件屬性,下載Applet,以及執行用其他方法更難于編碼和耗時的功能。
通過開發定制化標識庫,JSP技術是可以擴展的。今后,第三方開發人員和其他人員可以為常用功能創建自己的標識庫。這使得Web頁面開發人員能夠使用熟悉的工具和如同標識一樣的執行特定功能的構件來工作。
JSP技術很容易整合到多種應用體系結構中,以利用現存的工具和技巧,并且擴展到能夠支持企業級的分布式應用。作為采用Java技術家族的一部分,以及Java 2(企業版體系結構)的一個組成部分,JSP技術能夠支持高度復雜的基于Web的應用。
由于JSP頁面的內置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面就具有Java技術的所有好處,包括健壯的存儲管理和安全性。
作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運行”的特點。隨著越來越多的供應商將JSP支持添加到他們的產品中,您可以使用自己所選擇的服務器和工具,更改工具或服務器并不影響當前的應用。
當與Java 2平臺,企業版(J2EE)和Enterprise JavaBean技術整合時,JSP頁面將提供企業級的擴展性和性能,這對于在虛擬企業中部署基于Web的應用是必需的。
JSP頁面看上去象什么?
JSP頁面看上去象標準的HTML和XML頁面,并附帶有JSP引擎能夠處理和抽取的額外元件。通常,JSP元件創建插入最終頁面的文本。
使用示例是描述JSP技術的最好方法。下面的JSP頁面非常簡單;它打印帶年、當月的天,并且根據時間使用"Good Morning"和"Good Afternoon"對您表示歡迎。
該頁面結合了普通的HTML和大量JSP元件組成。
對時鐘JavaBeans組件的調用
對一個外部文件的包含(用于著作權信息)
JSP表達式和腳本
<HTML>
<%@ page language=="java" imports=="com.wombat.JSP.*" %>
<H1>Welcome</H1>
<P>Today is </P>
<jsp:useBean id=="clock" class=="calendar.jspCalendar" />
<UL>
<LI>Day: <%==clock.getDayOfMonth() %>
<LI>Year: <%==clock.getYear() %>
</UL>
<% if (Calendar.getInstance().get(Calendar.AM_PM) ==== Calendar.AM) { %>
Good Morning
<% } else { %>
Good Afternoon
<% } %>
<%@ include file=="copyright.html" %>
</HTML>
這個頁面包含下面這些組件:
一個JSP指示將信息傳送到JSP引擎。在這個示例中,第一行指出從該頁面即將訪問的一些Java編程語言的擴展的位置。指示被設置在<%@和%>標記中。
固定模板數據:所有JSP引擎不能識別的標識將隨結果頁面發送。通常,這些標識是HTML或者XML標識。在上面的例子中包括無序列表(UL)和H1標識。
JSP動作或者標識:這些通常作為標準或定制標識被實現,并且具有XML標識的語法。在這個例子中,jsp:useBean標識實例化服務器端的Clock JavaBean。
一個表達式:JSP引擎計算在<%==和%>標記間的所有東西。在上面的列表項中,時鐘組件(Clock)的Day和Year屬性值作為字符串返回,并且作為輸出插入到JSP文件中。在上面的例子中,第一個列表項是日子,第二個是年份。
小腳本是執行不為標識所支持的功能或者將所有的東西捆綁在一起的小的腳本。JSP 1.0軟件的內置腳本語言是基于Java語言的。在上面示例中的小腳本確定現在是上午還是下午,并且據此來歡迎用戶。
這個例子可能小了一點,但是技術上卻不是。從業務上可以將關鍵的處理封裝在服務器端的組件中,并且Web開發人員能夠使用熟悉的語法和工具很容易地訪問這些信息。基于Java的小腳本提供了一種靈活的方式以執行其他功能,而不要求擴展的腳本語言。頁面作為整體是可讀和可理解的,這就使得查找或者預防問題以及
共享工作更加容易。
這些組件中的一部分在下面有更詳細的描述。
JSP指示
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -