1.1.5 JSP
JSP (Java Server Pages)是由Sun公司倡導、許多公司參與一起建立的一種動態網頁技術標准,實現了普通靜態HTML和動態HTML混合編碼的技術。JSP是在服務器端建立的動態網頁,更明確地說,JSP是能在Web服務器端整個Java語言至HTML網頁的環境中,利用Html網頁內含的Java程序代碼取代原有的CGI、ISAPI或者IDC的程序,以便執行原有CGI/WinCGI、ISAPI的功能。許多由CGI程序生成的頁面大部分仍舊是靜態Html,動態內容只在頁面中有限的幾個部分出現。但是包括Servlet在內的大多數CGI技術及其變種,總是通過程序生成整個頁面,JSP技術可以分別創建這兩個部分。
現將JSP與ASP、PHP技術相比較,應會發現有如下的優點。
1、將內容的生成和顯示進行分離
使用JSP技術,Web頁面開發人員可以使用Html或者XML標識來設計和格式化最終頁面。使用JSP標識或者小腳本來生成頁面上的動態內容,其生成的內容的邏輯被封裝在標識和JavaBeans組件中,並且捆綁在小腳本中,所有的腳本在服務器端運行。因為核心邏輯被封裝在標識和Beans中,所以其他人,如Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的生成。在服務器端,JSP引擎解釋JSP標識和小腳本,生成所請求的內容(例如:通過訪問JavaBeans組件、使用JDBC技術訪問數據庫等),並且將結果以HTML(或者XML)頁面的形式發送至浏覽器。這有助於開發者既保護自己的代碼,又保證任何基於Html的Web浏覽器的完全可用性。
2、強調可重用的組件
絕大多數的JSP頁面依賴於可重用的、跨平台的組件(JavaBeans或者Enterprise JavaBean組件)來執行應用程序所要求的更為復雜的操作。開發人員能夠共享和交換執行普通操作的組件,使得這些組件為更多的使用者或者客戶團體所使用。基於組件的方法加速了總體開發過程,使得各種組織在他們現有的技能和優化結果的開發努力中得到平衡。
3、采用標簽簡化頁面開發
Web頁面開發人員不會都是熟悉腳本語言的編程人員。JSP技術封裝了許多功能,這些功能是在生成易用的、與JSP相關的XML標識的動態內容時所需要的。標准的JSP標識能夠訪問和實例化JavaBeans組件、設置或者檢索組件屬性、下載Applet,以及執行用其他方法更難於編碼和耗時的功能。
通過開發定制標簽庫,JSP技術是可以擴展的。今後第三方開發人員和其他人員可以為常用功能創建自己的標簽庫。這使得Web頁面開發人員能夠使用如同標簽一樣的工具來執行特定功能。
4、健壯性與安全性
由於JSP頁面的內置腳本語言是基於Java編程語言的,而且所有的JSP頁面都被編譯為Java Servlet,JSP頁面就具有Java技術的所有好處,包括健壯的存儲管理和安全性。
5、良好的移植性
作為Java平台的一部分,JSP擁有Java編程語言“一次編寫,各處運行”的特點。隨著越來越多的供應商將JSP支持添加到他們的產品中,可以使用自己所選擇的服務器和工具,而且更改工具和服務器並不影響當前的應用。
6、企業級的擴展性和性能
當與Java 2平台、企業版(J2EE)和Enterprise JavaBeans技術整合時,JSP頁面將具有更好的擴展性和性能。
JSP並沒有增加任何本質上不能用Servlet實現的功能。但是,在JSP中編寫靜態HTML更加方便,不必再用Println語句來輸出每一行HTML代碼。更重要的是,借助內容和外觀的分離,頁面制作中不同性質的任務可以方便地分開。比如,由頁面設計專家進行Html設計,同時留出供Servlet程序員插入動態內容的空間。
SSI是一種受到廣泛支持的在靜態Html中引入外部代碼的技術。JSP在這方面的支持更為完善,因為它可以用Servlet而不是獨立的程序來生成動態內容。另外,SSI實際上只用於簡單的包含,而不是面向那些能夠處理表單數據、訪問數據庫的“真正的”程序。
Javascript能夠在客戶端動態地生成Html。雖然JavaScript很有用,但它只能處理以客戶端環境為基礎的動態信息。除了CookIE之外,HTTP狀態和表單提交數據對Javascript來說都是不可用的。另外,由於是在客戶端運行,JavaScript不能訪問服務器端資源,比如數據庫、目錄信息等。
2006年Sun發布了JSP和JSF新技術規范,其中最重要的一點是兩者將表達式語言(Expression Language,EL)部分合二為一。在不久的將來,這兩種技術有可能更進一步地彼此融合,成為一種統一的表現層技術。JSP 2.1把Expression Language(EL)輸出到它自己各自分離的文檔中,在技術上,這些文檔是JSP規范的子文檔。這些統一的EL規范定義了一個更高層的Java 包——Javax.el。這個包與使用它的技術之間完全獨立,並且允許此技術將自身插入EL處理過程。更改的JSP規范遵從使用標准化EL的規范。對於前面提到的JSR-252,這個規范並沒什麼新特性。Faces 1.2支持新的標准化EL,還包含一些Bug修復的相關規范。
Faces和JSP在JSRs下的結盟帶來了一些新功能,也為將來的發展打下了堅實的基礎。例如,在同時使用Faces和JSP的Web應用中,網頁僅使用JSP(不包含任何Faces內容)來訪問Managed Beans成為可能。在JSP規范的附錄E中和Faces規范的前言中都可以看到更改內容的細節。