java portlet和servlet之间有什么区别?

ruoxqz4g  于 10个月前  发布在  Java
关注(0)|答案(5)|浏览(99)

我被要求从事portlet和门户的工作,我想知道portlet和servlet之间的区别。
portlet与servlet有什么不同(可能是功能上的)?

i86rm4rw

i86rm4rw1#

  1. Servlet和Portlet是使用Java实现的基于Web的组件。
  2. Portlet由Portlet容器管理,就像servlet由servlet容器管理一样。
  3. Portlet和Servlet都可以生成静态和动态内容。
  4. Portlet和Servlet的生命周期由容器控制
    1.客户机/服务器模型用于servlet和portlet
    1.打包和部署本质上是相同的,WAR/EAR。
    1.应用程序会话同时存在于Servlet和Portlet容器中。它是在portlet容器中从呈现阶段到操作阶段(或任何更低的阶段)共享数据(原始的Portlet间通信)的方法之一。
  5. Servlet和Portlet都使用支持它的类似服务器/ VM环境。但是,在Portlet的情况下,可能需要一些额外的配置来使其正常工作
    1.两者的构建/DI工具类似- Ant,Maven,Gradle等都受支持。主要是:)-Liferay 7改变了一些。

差异

  1. servlet可以呈现完整的网页,而portlet呈现html片段。这些片段由门户聚合成完整的网页。
  2. JSR 168 Portlet的内容类型只能是cHTML、XHTML、WML。它不支持其他内容类型。
  3. Portlet不允许生成包含body、frame、frameset、head、html或title等标记的HTML代码。
  4. Portlet与servlet不同,它没有URL,因此不能直接访问。只能通过包含portlet的门户页面进行访问。
    1.可以为Portlet提供控件来操作其窗口状态或Portlet模式。
    1.单个portlet的多个示例可以放置在同一页面上。
  5. Portlet支持持久的配置和定制、概要信息。
  6. Portlet可以有两种类型的请求,即。呈现请求和动作请求。
  7. Portlet在会话中有两个作用域;应用程序范围用于跨Portlet的通信,Portlet范围用于Portlet内的通信。
  8. Portlet不能设置响应的字符集编码,也不能设置HTTP响应头。
  9. Portlet无权访问请求URL。因此它无法访问附加到URL的查询参数。Portlet无法设置Cookie。
  10. Portlet API的典型方法有doView()doEdit()doHelp()processAction(),而servlet的典型方法有service()doPost()doGet()
    1.*Servlet规格 * - 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)
  11. Portlet的部署涉及different approach而不是Servlet应用程序。一些提供程序(Liferay/Alfresco/WebSphere)支持portlet的热部署,而不需要重新启动服务器,这在没有使用特殊库(如OSGi)模块化应用程序的servlet的情况下是不可能的。

编辑(来自评论)

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

8nuwlpux

8nuwlpux2#

Portlet是规范门户容器和组件的JSR-168标准的一部分。这与Web容器(和servlet)的标准不同。虽然这两个标准之间肯定有很强的相似之处,但它们在容器,API,生命周期,配置,部署等方面有所不同。
portlet与servlet可能是这样的:虽然servlet总是响应单一类型的操作- request,但portlet(由于其生命周期的性质和更强的容器绑定)必须响应两种类型的操作:renderrequest。当然还有更多,但我在研究门户开发时发现这是两者之间的核心区别。

e37o9pze

e37o9pze3#

portlet和servlet都接收一个http请求并返回一个响应,通常是一些可以由浏览器呈现的HTML。Portlet用于“Portal”的上下文中,其思想是用户看到的单个页面具有许多部分,例如tiles,每个部分来自不同的Portlet。
现在,你可以从普通的服务器上得到那种“平铺”的效果(参见Struts + Tiles的示例)Portlet的额外之处在于Portlet位于Portal提供的更丰富的环境中,提供了额外的API,使得任何Portlet显示的内容可以由各个用户根据其偏好进行配置,并且Portlet可以彼此通信-按下一个中的按钮,在另一个世界里发生了一些事情。

3qpi33ja

3qpi33ja4#

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

k0pti3hp

k0pti3hp5#

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

相关问题