我被要求在Portlet和门户上工作。

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

portlet与servlet有何不同(可能在功能上)有何不同?

有帮助吗?

解决方案

Portlet是调节门户容器和组件的JSR-168标准的一部分。这与Web容器(和servlets)的标准不同。尽管这两个标准之间肯定有很强的相似之处,但它们在容器,API,生命周期,配置,部署等方面有所不同。

Portlet与Servlet之间的主要区别可能是,尽管Servlet始终响应单一类型的动作 - 要求, ,Portlet(由于其生命周期的性质和更强的容器绑定)必须对两种类型的行动做出反应: 使成为要求. 。当然还有更多,但我发现这是我研究门户开发时两者之间的核心区别。

其他提示

从来源增强: servlets vs portlets

相似之处

  1. Servlet和Portlet是基于Web的组件,它们使用Java进行实现。

  2. Portlet由Portlet容器管理,就像Servlet由Servlet容器管理。

  3. 静态内容和动态内容均可通过Portlet和Servlet生成。

  4. 港口和servlet的生命周期由容器控制

  5. 客户端/服务器模型均用于servlets和portlets

  6. 包装和部署基本相同,战争/耳朵。

  7. 应用程序会话都存在于Servlet和Portlet容器中。它是从渲染阶段到Portlet容器中的动作阶段(或任何较低阶段)共享数据(粗互动通信)的方式之一。

  8. Servlet和Portlet都使用支持它的类似服务器 / VM环境。虽然,如果Portlets使其勾勒出来,可能需要一些其他配置
  9. 支持两者的构建/DI工具都相似 - 蚂蚁,Maven,Gradle等都得到了支持。 :) - 这与Liferay 7发生了变化。

差异

  1. servlet可以渲染完整的网页,而portlet则呈现HTML片段。这些片段由门户集合成一个完整的网页。

  2. JSR 168端口的内容类型只能是CHTML,XHTML,WML。它不支持其他内容类型。

  3. 不允许Portlet生成包含标签,例如车身,框架,框架,头,HTML或标题等标签。

  4. 与servlet不同的portlet没有附加URL,因此无法直接访问它。访问仅通过容纳Portlet的门户页面。

  5. 可以为Portlet提供控制窗口状态或Portlet模式的控件。

  6. 单个Portlet的多个实例可以放在同一页面上。

  7. Portlet支持持续的配置和自定义,配置文件信息。

  8. Portlet可以有两种类型的请求。渲染请求和行动请求。

  9. Portlet在会话中有两个范围;用于跨Portlet和Portlet范围的应用程序范围的应用程序范围。

  10. Portlet无法设置响应的字符集编码,也无法设置HTTP响应标头。

  11. Portlet无法访问请求URL。因此,它无法访问附加到URL的查询参数。 Portlet无法设置cookie。

  12. Portlet API的典型方法是 doView(), doEdit(), doHelp()processAction() 虽然servlet的那些是 service(), doPost(), doGet().

  13. 港口的部署涉及 不同的方法 比servlet应用程序。一些提供商(Liferay/Alfresco/WebSphere)支持Portlet的热门部署,而无需重新启动服务器,而在不使用OSGI等特殊库对应用程序进行模块化应用程序的情况下,这是不可能的。


编辑 (来自评论)

portlet容器是在servlet容器上构建的。因此,最终可以说Portlet在Servlet容器上运行。但是,在开发应用程序时,我们将与Servlet/Java EE容器分开查看Portlet容器。

Portlet和Servlet都会收到HTTP请求并返回响应,这实际上是一些可以由浏览器渲染的HTML。在“门户”的上下文中,使用了一个portlet,这个想法是,用户看到的单个页面有很多零件,想想瓷砖,每个页面都来自其他端口。

现在,您可以从普通服务器中获得“瓷砖”效果(请参阅Struts + Tiles的示例),portlets的额外位是Portlet在门户提供的较丰富的环境中,提供了额外的API,以便任何港口显示的内容都可以由单个用户配置为他们的偏好,并且Porlet可以彼此通信 - 按下一个按钮,在另一个按钮中发生了一些事情。

servlet具有Java定义(处理HTTP GET/POST请求的应用程序),而Portlet具有用户界面定义。一个组件执行类似于Windows Vista窗口小部件或Stackoverflow中使用的许多组件。它们不一定要由服务器端的Servlet支持。但是Portlet标准是与Java一起开发的。奥莱利有一个很好的 教程.

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top