Portlet和Servlet的相同点:

(1)都是基于java技术的web组件

(2)都是被专门的容器管理

(3)都是生成动态内容

(4)生命周期都被容器管理

(5)都是与web客户端通过request/response方式交互

 

Portlet和Servlet的不同点:

(1)Servlet生成整个web页面,而Portlet只生成内容片断,而Portal来负责将这些片断组装到同一个页面。

(2)Servlet可以被映射为url,但是Portlet不可以被直接映射为url

(3)Web客户端可以直接同Servlet交互,但是如果Web客户端要和Portlet交互需要通过Portal 系统。

(4)Servlet的请求类型单一,但是Portlet有多种request,比如actionRequest,renderRequest.

(5)Portlet定义了Portlet Mode和Window State

 

 

Portlet的额外功能:

(1)Portlets可以持久化存储和访问数据

(2)Portlets具有URL重写的功能,可以让Portal来生成访问Portlet的链接和action

(3)Portlet可以在session的两个范围上存/取数据,portlet私有域或者application域上

(4)Portlet之间可以交互,发送/接收事件

 

Portlet不具备的但是Servlet具备的功能:

(1)Portlet的response(actionResponse,renderResponse)都无法设置字符编码

(2)Portlet不可以通过URL直接访问

 

Portlet容器是Servlet容器的扩展,比如Tomcat是Servlet容器,但是Liferay_Tomcat_Bundle是Portlet容器。