portlet和servlet有什么区别?

时间:2009-09-26 05:57:44

标签: java servlets java-ee portlet

我被要求处理portlet和门户。

我想知道portlet和servlet之间的区别吗?

portlet与servlet的不同之处(可能在功能上)在哪里?

5 个答案:

答案 0 :(得分:129)

从源增强 Servlets Vs Portlets

  

相似之处

     
      
  1. Servlet和Portlet是使用Java的基于Web的组件   他们的实施。

  2.   
  3. Portlet由portlet容器管理,就像servlet一样   由servlet容器管理。

  4.   
  5. 静态和动态内容都可以由Portlet生成   的servlet。

  6.   
  7. portlet和servlet的生命周期由容器

  8. 控制   
  9. 客户端/服务器模型用于servlet和portlet

  10.   
  11. 包装和部署基本相同,WAR / EAR。

  12.   
  13. 应用程序会话存在于Servlet和Portlet容器中。它是在portlet容器中从呈现阶段到动作阶段(或任何较低阶段)共享数据(粗略的Portlet间通信)的方式之一。

  14.   
  15. Servlet和Portlet都使用支持它的类似服务器/ VM环境。虽然,在portlet的情况下可能需要一些其他配置来打勾
  16.   
  17. 构建/ DI工具两者都相似 - 都支持Ant,Maven,Gradle等。大部分:) - 这与Liferay 7有所改变。
  18.   

  

不同点

     
      
  1. Servlet可以呈现完整的网页,而portlet呈现html   片段。这些片段由门户聚合成一个   完整的网页。

  2.   
  3. JSR 168 portlet的内容类型只能是cHTML,XHTML,WML。它   不支持其他内容类型。

  4.   
  5. 不允许Portlet生成包含标记的HTML代码   作为正文,框架,框架集,头部,html或标题。

  6.   
  7. 与servlet不同的Portlet没有附加URL,所以它   无法直接访问。只能通过门户页面访问   它持有portlet。

  8.   
  9. 可以为Portlet提供控件来操纵其窗口状态   或portlet模式。

  10.   
  11. 单个portlet的多个实例可以放在同一个portlet上   页。

  12.   
  13. Portlet支持持久配置和自定义配置文件   信息。

  14.   
  15. Portlet可以有两种类型的请求即。呈现请求和操作   请求。

  16.   
  17. Portlet在会话中有两个范围;适用范围   跨portlet的通信和内部portlet的portlet范围   通信。

  18.   
  19. Portlet不能设置响应的字符集编码也不行   它设置了HTTP响应头。​​

  20.   
  21. Portlet无权访问请求URL。所以它无法访问   查询参数附加到URL。 Portlet无法设置cookie。

  22.   
  23. Portlet API的典型方法是doView()doEdit()doHelp()和   processAction()而servlet的service()doPost(),   doGet()

  24.   
  25. Portlet的部署涉及different approach而不是Servlet应用程序。一些提供程序(Liferay / Alfresco / WebSphere)支持热部署portlet而无需重新启动服务器,这在servlet的情况下是不可能的,而不使用OSGi等特殊库模块化应用程序。

  26.   

修改 (来自评论)

Portlet容器构建在Servlet容器上。所以最终可以说portlet在Servlet容器上运行。但是在开发应用程序时,我们分别从Servlet / Java EE容器中查看portlet容器。

答案 1 :(得分:63)

Portlet是JSR-168标准的一部分,用于管理门户容器和组件。这是与Web容器(和servlet)标准不同的标准。虽然这两个标准之间肯定有很强的相似之处,但它们在容器,API,生命周期,配置,部署等方面存在差异。

portlet与servlet之间的主要区别在于,虽然servlet总是响应单一类型的操作 - 请求,但portlet(由于其生命周期的性质和更强的容器绑定)必须响应有两种类型的操作:呈现请求。当然还有更多内容,但我在研究门户开发时发现这是两者之间的核心差异。

答案 2 :(得分:8)

portlet和servlet都会收到一个http请求并返回一个响应,这通常是一些可以由浏览器呈现的HTML。在“门户”的上下文中使用portlet,其想法是用户看到的单个页面有很多部分,想想瓦片,每个瓦片来自不同的portlet。

现在,您可以从普通服务器获得“平铺”效果(请参阅Struts + Tiles以获取示例)来自portlet的额外位是Portlet在Portal提供的更丰富的环境中,额外的API是提供,以便任何portlet显示的内容可以由个人用户配置为他们的首选项,并且porlet可以相互通信 - 按一个按钮,一个按钮发生在另一个。

答案 3 :(得分:6)

Servlet有一个java定义(处理HTTP GET / POST请求的应用程序),而portlet有一个用户界面定义。一个组件执行类似于windows vista小部件的特定功能或者这里的stackoverflow中使用的很多组件。它们不一定需要服务器端的servlet支持。但Portlet标准是与java一起开发的。 O'Reilly有一个很好的tutorial

答案 4 :(得分:4)

本质上,Servlet提供的内容通常占用浏览器中的整个页面(除非您使用的是框架),并且portlet提供由窗口包装的内容。使用portlet,您可以将多个portlet彼此并排放置,每个portlet可以提供与另一个不同的内容和功能。 portlet可以为一种类型的应用程序提供完整的交互,而另一种portlet可以为另一种类型的应用程序提供内容。门户网站可以提供一些内务管理功能,并保护页面上所有portlet的单一入口点。至于他们之间的细节(相似/不同),请继续阅读。以下是一些相似之处:Servlet和Portlet是基于Web的组件,它们利用Java实现Portlet由类似于servlet容器的portlet容器管理这两个组件都生成内容,这些内容可以是静态的或动态的