Portlets与 servlets的相同点:
都是基于 java技术的web 组件
都被专门的容器管理
都生成动态内容
生命周期都被容器管理
都是与web客户端通过request/response的方式交互
Portlets与 servlets的不同点:
Portlet只生成内容片断,Portal来负责把这些片断聚集在一个页面中。
Portlet不能直接映射成一个 URL
Web 客户端同 Portlet交互需要通过Portal application
Portlets 有多种 request,比如: action request、render request、event request、
resource rquest
Portlets 定义了 Portlet modes 和 window states
同一个Portlets可以存在多次在同一个 Portal 页面
Portlet提供的附加功能但是 servlet没有提供
Portlets 可以持久化存储和访问数据
Portlets可以访问用户的信息
Portlets 具有生成 URL 功能,可以让 Portal来生成访问Portlet的链接和请求
Portlets 可以在 session 的两个范围中存储数据,application-wide scope 和 the
Portlet private scope
Portlet之间可以互相接受、发送事件
Portlets 不具备的 servlet提供的功能
在render response中设置字符编码
直接通过 URL 访问
虽然render不能设置字符编码,但是 JSR286中新提供的 serveResource方法具有完全的
response控制功能。
就是由于上述的不同,才定义了这个新的 web 组件规范。Portlet 重用了很多 servlet中
基础的、重要的概念,比如部署方式、类加载、生命周期管理、session管理、request分发。