其实portlet 和servlet是一样的,都是web组件,所以portlet 的生命周期也是受portlet container所控制的。 portlet container 负责加载,实例化,初始化,并传送request给portlet实例,最终去销毁portlet实例。
如果你以前写过servlet,那么你会很容易的去理解portlet container的职责所在。那么servlet和portlet到底有什么区别呢?
1. servlet 不能为内容的整合做出贡献
如果你想在web page 上利用servlet去整合内容,那么你就把所有的职责例如整合和表现内容全部交给了servlet。 但是如果你使用了portlet,portal server的职责就是整合不同的portlet所产生的内容,然后将这些内容表现在portal page 上。
2. 为了去定制一些内容,servlet 需要去做更多的事情
如果你想在servlet的应用程序上去定制一些内容,你需要去创建合适的数据结构,用于去保存和取回用户的一些信息,所以你要为此写下大量的代码。 但是如果使用portlet去解决这件事情的话,portlet container 就会替你解决,它的职责就是去保存和取回配置数据,portlet 的开发者并不需要关心它是怎么存的,存在哪的 。
3. servlet 不支持基于event-based 的 inter-servlet 交流
为了能使inter-servlet可以交流,你唯一的方法就是使用servlet 的API去直接调用另一个servlet。然而在portlet container中,支持使用events 促使inter-portlet 交流,使用events可以让portlet进行亲密的交流,当你进行添加或者移除portlet时会接收到events。