二、 与servlet规范的关系

Servlet规范中是这样定义的:

A servlet is a Java technology based web component, managed by a container, that generates dynamic content. Like other Java-based components, servlets are platform independent Java classes that are compiled to platform neutral bytecode that can be loaded dynamically into and run by a Java enabled web server. Containers, sometimes called servlet engines, are web server extensions that provide servlet functionality. Servlets interact with web clients via a request/response paradigm implemented by the servlet container.

Servetl是居于java技术的web组件,被servlet容器管理,生成动态内容。Servlet通过servlet容器与web客户端展开request、response交互。

其实很难说出Portlet与servelt之间的关系,从某个层面说portlet与servlet之间没有任何关系,但是从另一个层面来说又有个千丝万缕的关系,就像马和牛一样,所以这里只是做一些技术上的比较

Portlets与 servlets的相同点:

• 都是基于java技术的web 组件

• 都被专门的容器管理

• 都生成动态内容

• 生命周期都被容器管理

• 都是与web客户端通过request/response的方式交互

Portlets与 servlets的不同点:

• portlet只生成内容片断,portal来负责把这些片断聚集在一个页面中。

• portlet不能直接映射成一个url

• Web 客户端同portlet交互需要通过portal system

• Portlets 有多种request, action requests 和 render requests

• Portlets 定义了 portlet modes and window states

• Portlets可以离开多次在portal 页面

Portlet提供的附加功能但是servlet没有提供

• Portlets 可以持久化存储和访问数据

• Portlets可以访问用户的信息

• Portlets 具有url重写功能,可以让portal来生成访问portlet的链接和action。

• Portlets 可以在session的两个范围中存储数据,application-wide scope 和 the portlet private scope.

• Portlet可以互相接受、发送事件

Portlets 不具备的servlet提供的功能

• 在response中设置字符编码

• 直接通过url访问

Jsr286中新提供的serveResource具有完全的response控制。

就是由于上述的不同,才定义了这个新的web组件规范。Portlet重用了很多servlet中基础的、重要的概念,比如部署方式、类加载、生命周期管理、session管理、request分发。在同一个portlet 应用中的portlet、servlet、jsp共享类加载、应用上下文、session。

Portlet与servlet/jsp中的桥梁

Portlet可以利用servlet、jsp生成内容,一个portlet可以使用request分发调用servlet、jsp,就像一个servlet可以调用servlet、jsp。当一个servlet被portlet调用,servlet的request基于portlet的request,servlet的response基于portlet的response。比如:

• 在portlet中request设置的属性,servlet可以获得。

• Portlet、servlet、jsp共享一个输出流。

• 使在portlet中session设置的属性,servlet可以获得。

用servlet生命周期事件

Portlet中的PortletContext 、PortletSession与servlet中的SevletContext、HttpSession是有关联关系的,所有这对servlet生命周期的listener同样对portlet有效

Servlet容器与portlet容器之间的关系

Portlet的容器是servlet容器的扩展,根据中间件厂商的实现方式portlet容器可以单独实现也可以基于servlet扩展。

转载于:https://www.cnblogs.com/seaairland/archive/2010/12/13/1904052.html

Portlet开发指南第二章相关推荐

  1. Vert.x Java开发指南——第二章 使用Vert.x编写最小可用Wiki

    第二章 使用Vert.x编写最小可用Wiki 版权声明:本文为博主自主翻译,转载请标明出处. https://blog.csdn.net/elinespace/article/details/8037 ...

  2. Unix/Linux下的Curses库开发指南——第二章 curses库I/O处理

    第2章 curses库I/O处理 2.1 curses库简介 curses库是curses开发包中最重要的一个库,其中提供了一些基本的屏幕操作函数,包括输入/输出,屏幕初始化,屏幕处理中断以及窗口的创 ...

  3. Python精确指南——第二章 界面开发

    2 Python GUI 借助Python语言的优势,使用Python的界面库开发界面程序,开发周期更短.但因为Python的界面开发库底层实现一般不是Python,只是为Python封装的接口,所以 ...

  4. 训练指南第二章-基础问题

    训练指南第二章-基础问题 P170 2 / 4 Problem A UVA 10943 How do you add? 1 / 2 Problem B UVA 10780 Again Prime? N ...

  5. Web前端开发笔记——第二章 HTML语言 第四节 超链接标签

    目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...

  6. Java7并发编程指南——第二章:线程同步基础

    Java7并发编程指南--第二章:线程同步基础 @(并发和IO流) Java7并发编程指南第二章线程同步基础 思维导图 项目代码 思维导图 项目代码 GitHub:Java7ConcurrencyCo ...

  7. [翻译]现代java开发指南 第二部分

    现代java开发指南 第二部分 第二部分:部署.监控 & 管理,性能分析和基准测试 第一部分,第二部分,第三部分 =================== 欢迎来到现代 Java 开发指南第二部 ...

  8. ZeroMQ 中文指南 第二章 ZeroMQ进阶【转载】

    此文章转载自GitHub : https://github.com/anjuke/zguide-cn 作者信息如下. ZMQ 指南 作者: Pieter Hintjens ph@imatix.com, ...

  9. Web前端开发笔记——第二章 HTML语言 第六节 区域标签、列表标签

    目录 一.区域标签 (一)div标签的定义 (二)div标签的属性 二.列表标签 (一)列表标签的定义 (二)列表标签的类型 1.有序列表 (1)有序列表的定义 (2)有序列表的属性 2.无序列表 ( ...

最新文章

  1. 二维“玄”如何“抖动”出三维世界?
  2. 机器学习笔记(九)聚类
  3. Linux多线程同步——信号量
  4. MySQL: ERROR 1040: Too many connections”的异常情况1
  5. mysql优化(九)
  6. 安装sqlserver2008,重新启动计算机不通过的解决办法
  7. 解决java compiler level does not match the version of the inst
  8. 95-241-100-源码-Flink语义-Flink的exectly-once系列之两阶段提交概述
  9. VS2012--应用程序无法正常启动0xc000007b 的错误
  10. 淮阴工学院计算机专业的考研率,淮阴工学院江淮学院(淮阴工学院考研录取率)...
  11. python == 字符编码
  12. vue中文件上传方法
  13. 没事学学docker(二):本地Centos7和阿里云服务器安装docker及其解决安装出现的问题
  14. base64转码原理
  15. uni-app 微信小程序全局配置分享好友、朋友圈...
  16. 【云和恩墨大讲堂】高凯 | Oracle 12c 新特性-多租户的维护管理
  17. java通过API给企业微信用户发送微信消息
  18. ValueError: empty range for randrange() (0, 0, 0)
  19. mac实用小技巧之解压.xip文件
  20. Spring Boot 3.0 正式发布,这份升级指南必须收藏

热门文章

  1. C++中实现回调机制的几种方式
  2. 最小生成树kruskal算法并查集版 C语言实现
  3. gin使用 GET, POST, PUT, PATCH, DELETE, OPTIONS
  4. 共用体和枚举,写写意思下
  5. strcpy函数的使用
  6. linux内核关于io的变迁
  7. 【漏洞复现】ThinkPHP5 5.x 远程命令执行(getshell)
  8. ICO的“金三角”与区块链的“新大陆”
  9. ZOJ 1696 Viva Confetti 计算几何
  10. Greenplum,HAWQ interval parser带来的问题 - TPCH 测试注意啦