JSR168 Portlet规范的中文版 【二】 PLT.3 与Servlet规范的关系

与Servlet规范的关系



我们先看一下Servlet v2.3规范中对Servlet的定义:
“Servlet是基于Java技术的Web组 件。容器(Container)对servlet进行管理,并生成动态内容。像其它基于Java的组件一样,Servlets是平台独立性的Java类, 被编译成与平台无关的二进制文件,最后被适用Java的Web服务器动态载入并运行。容器,有时也被称作Servlet引擎,是属于能够提供 servlet功能的Web服务器的扩展。Servlet通过由Servlet容器实现的request/response实现类来与Web客户端进行交 互。”

根据以上定义,我们可以知道Portlet与Servlet具有以下相同特点

  • 都是基于Java技术的Web组件
  • 都是由专门的容器进行管理
  • 都可以生成动态内容
  • 生命周期都是由容器来管理
  • 都是通过request/response实现类来与Web客户端进行交互


同时,我们也可以知道Portlet具有以下与Servlet不同的特点

  • Portlet只能生成标记代码片段,而不是完整的页面文件。Portal可以将这些片段组成一个完整的Portal页面。
  • Portlet不是直接与URL进行绑定。
  • Web客户端通过Portal系统与Portlet进行交互。
  • Portlet可以处理多个精细的request,它们是action request和render request。
  • Portlet可以预定义Portlet模式和窗口状态。模式能够确定Portlet可以实现的功能,而状态则能够确定Portal页面上真实状态的数量。
  • 同一个Portlet可以在同一个Portal页面上出现多次。


Portlet还可以访问以下servlet所不能访问的功能:

  • Portlet可以访问并存储持久性配置和自定义数据。
  • Portlet可以访问用户档案信息。
  • Portlet具有URL重写功能,可以在它的内容中创建超链接,这样就允许在页面片断中放置Portal服务器所不知的链接和动作。
  • Portlet可以在两个范围中将过渡过程数据存储到Portlet会话中:应用范围和Portlet私有范围。


同时,以下是Servlet可以但Portlet却不能访问的功能:

  • 设置response加密字符集。
  • 在response中设置HTTP头。
  • 客户端对Portal请求的URL。


由于这些不同,专家组决定将Portlet视为一个新的组件。因此,Portlet不是Servlet。 这样就允许为Portlet定义清晰的接口和行为。

为 了尽可能地重用servlet的基础架构,本Portlet标准文档尽一切可能地采纳Servlet标准文档中的内容。这包括部署、类的载入、Web应 用、Web应用生命周期的管理、会话管理和请求分发。许多概念和Portlet API的部分都是根据Servlet API构建的。

将Portlet、Servlet和JSPs组合到一个扩展的Web应用中,被称为Portlet应用。在同一个Portlet应用中,Portlet、Servlet和JSPs共享载类器、应用上下文和会话。

 

PTL3.1 在Portlet中使用Servlet/JSPs

 

Portlet可以使用Servlet、JSPs或JSP标签库来生成内容。

 

如同Servlet可以利用请求派发器(见PLT.16派发请求到Servlet和JSPs)调用其它Servlet和JSPs,Portlet可 以调用Servlet和JSPs。为了实现Portlet与Servlet的无缝整合,Portlet规范吸纳了许多Servlet对象。

 

在从Portlet内调用Servlet或JSP时,发给Servlet或JSP的Servlet request是基于Portlet request,而返给Servlet或JSP的Servlet response是基于Portlet response。

  • 设置在portlet request中的属性对包含的servlet request是有效的(见PLT.16派发请求到Servlet和JSPs)。
  • Portlet和包含的servlet或JSP共享同一个输出流(见PLT.16派发请求到Servlet和JSPs)。
  • 设置在portlet session中的属性可以在servlet session中访问,反之亦然(见PLT.15 Portlet Session)。

PTL3.2 Servlet容器与Portlet容器的关系

 

Portlet容器是Servlet容器的扩展。也就是说,Portlet容器可以建在Servlet容器之上或它可以实现Servlet容器的所有功能。不管Portlet容器是怎么实现的,它的运行环境应该支持Servlet规范2.3。

你可能感兴趣的:(应用服务器,Web,jsp,servlet,配置管理)