老文原創
2.5. Portlet規範和J2EE 的關係
Portlet apr 1.0版是基於J2EE 1.3版.Portlet s容器和PORTLETS符合J2EE規範描述的需求,能夠運行在J2EE環境中.
在名字和概念上,Portlet 和Servlet (定義在Servlet 2.3 規範中)很類似。
3. Portlet規範與Servlet規範的關係
Servlet 2.3 規範對Servlets 的定義是這樣的:
“Servlet 是一種基於Java 技術的,由容器管理的,能夠生成動態內容的Web 組件。像其他一些Java 組件,Servlets 是一些平臺無關的Java 類,能夠被編譯成平臺獨立的字節碼。並且能夠動態的被裝載並運行在Java 功能的Web 服務器(這樣的Web 服務器容器也叫做Servlet 引擎,能夠使Web 服務器擴展提供Servlet 功能)。Servlet 容器實現了請求/響應的模式,Servlets 可以和Web 客戶端通過這樣的模式交互”
Portlets 和 Servlets 有下列相似之處:
l Portlets 是基於Java 技術的Web 組件
l Portlets由專門的容器來管理
l Portlets 可以生成動態的內容
l 容器管理Portlets 的生命週期
l Portlets 與Web 客戶端通過“請求/響應”的模式來交互
Portlets 和 Servlets 的不同之處有以下幾方面:
l Portlets 生成一些標記語言的標記片斷,而不是整個文檔。由Portal 聚合這些Portlet 標記片形成一個完整的Portal 頁面。
l Portlets 不直接綁定到一個URL
l Web 客戶端是通過Portal 系統與Portlets 交互
l Portlets 更精確的就行請求的響應,處理和提交
l 在Portal 頁面中,Portlets 有預定義好的Portlet 模式和窗口狀態來指出當前Portlet 執行的是什麼功能
l Portlets 能夠在Portal 頁面中存在多次
Portlets 能夠具有Servlets 不能提供的一些額外功能:
l Portlets 可以有訪問持久存儲的配置和客戶定製數據的能力
l Portlets 可以訪問用戶描述信息
l Portlets 有URL 重寫功能來在它的內容中創建超級鏈接,這樣就可以允許Portal 服務器在頁面片中不可知的創建鏈接和處理
l Portlets 能夠在兩個不同的範圍內,在 Portlet session 中暫時存儲一些數據:應用範圍內和Portlet 私有範圍
有一些Servlet 的功能,Portlet 並不具備
l 在響應中設置字符編碼
l 在響應中設置HTTP 頭信息
l 沒有客戶端可以請求的URL
因爲這些不同,專家組決定需要一種新的Portlet 組件,因此,Portlet 並不是Servlet,將爲Portlets定義清晰的接口和行爲。
爲了儘可能的重用現有的Servlet 基礎結構,有可能的情況下,Portlet 規範使用了一些Servlet 規範提供的功能。比如包括了:部署、類裝載、Web 應用、Web 應用生命期管理、Session 管理和請求分派。大量的概念和Portlet API 的內容都仿照了Servlet API。
Portlets、Servlets 和JSPs 捆綁在一起作爲一個擴展Web 應用就叫做 Portlet 應用。Portlets、Servlets 和JSPs 在同一個Portlet 應用中共享類裝載器、應用context 和session。
老文原創