Portlet 和 servlet 之间有什么区别?
我被要求在 Portlet 和门户上工作。
我想知道 Portlet 和 servlet 之间的区别吗?
Portlet 与 servlet 有何不同(可能在功能上)?
我被要求在 Portlet 和门户上工作。
我想知道 Portlet 和 servlet 之间的区别吗?
Portlet 与 servlet 有何不同(可能在功能上)?
从源代码增强:Servlet 与 Portlet
相似 之 处
Servlet 和 Portlet 是基于 Web 的组件,它们使用 Java 来实现它们。
Portlet 由 Portlet 容器管理,就像 servlet 由 servlet 容器管理一样。
静态和动态内容都可以由 Portlet 和 Servlet 生成。
Portlet 和 servlet 的生命周期由容器控制
客户机/服务器模型同时用于 servlet 和 Portlet
打包和部署本质上是相同的,WAR/EAR。
应用程序会话同时存在于 Servlet 和 Portlet 容器中。它是在 Portlet 容器中从渲染阶段到操作阶段(或任何较低阶段)共享数据(粗略的 Portlet 间通信)的方法之一。
Servlet 和 Portlet 都使用支持它的类似服务器/虚拟机环境。虽然,在 Portlet 的情况下可能需要一些额外的配置来使其滴答作响
构建/ DI工具对于两者都是相似的 - Ant,Maven,Gradle等都受支持。主要是:) - 这在Liferay 7中发生了一些变化。
不同之处
Servlet 可以呈现完整的网页,而 Portlet 可以呈现 html 片段。这些片段由门户聚合到一个完整的网页中。
JSR 168 Portlet 的内容类型只能是 cHTML、XHTML、WML。它不支持其他内容类型。
不允许 Portlet 生成包含诸如正文、框架、框架集、标题、html 或标题之类的标记的 HTML 代码。
与 servlet 不同的 Portlet 没有附加 URL,因此无法直接访问它。只能通过保存 Portlet 的门户页面进行访问。
可以向 Portlet 提供控件来操作其窗口状态或 Portlet 模式。
单个 Portlet 的多个实例可以放在同一个页面上。
Portlet 支持持久性配置和自定义、配置文件信息。
Portlet 可以有两种类型的请求,即呈现请求和操作请求。
Portlet 在会话中有两个作用域;跨 Portlet 通信的应用程序作用域和用于 Portlet 内通信的 Portlet 作用域。
Portlet 不能设置响应的字符集编码,也不能设置 HTTP 响应标头。
Portlet 无权访问请求 URL。因此,它无法访问附加到 URL 的查询参数。Portlet 不能设置 Cookie。
Portlet API 的典型方法是 、 和 servlet 的方法是 、 、 。
doView()
doEdit()
doHelp()
processAction()
service()
doPost()
doGet()
Servlet Specification - JSR 369(Servlet 4.0), JSR 340(Servlet 3.1), JSR 315(Servlet 3.0), JSR 154(Servlet 2.5 & 2.4)。Portlet 规格 - JSR 168(Portlet Spec v1.0), JSR 286(Portlet Spec v2.0), JSR 362(Portlet Spec v3.0)
Portlet 的部署涉及与 Servlet 应用程序不同的方法。一些提供程序(Liferay/Alfresco/WebSphere)支持在不需要重新启动服务器的情况下热部署 Portlet,这在不使用特殊库(如 OSGi)对应用程序进行模块化的情况下是不可能实现的。
编辑(来自评论)
Portlet 容器构建在 Servlet 容器上。因此,最终可以说 Portlet 在 Servlet 容器上运行。但是在开发应用程序时,我们将 Portlet 容器与 Servlet/Java EE 容器分开查看。
Portlet 是 JSR-168 标准的一部分,用于规范门户容器和组件。这与 Web 容器(和 servlet)的标准不同。虽然这两个标准之间肯定有很强的相似之处,但它们在容器,API,生命周期,配置,部署等方面有所不同。
Portlet 与 Servlet 之间的主要区别可能是,虽然 Servlet 总是响应单一类型的操作 - 请求,但 Portlet(由于其生命周期的性质和更强的容器绑定)必须响应两种类型的操作:呈现和请求。当然还有更多,但是当我研究门户开发时,我发现这是两者之间的核心区别。