`
buliedian
  • 浏览: 1248597 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

servlet与portlet的异同

阅读更多
portlet上下文
由PortletContext实现,必须与ServletContext一致。主要方法:getPortalInfo、getProperty、getPropertyNames、getSupportedPortletModes、getSupportedWindowStates

PortletRequest
PortletRequest有两个子类: ActionRequest,RenderRequest

主要方法:

getParameter返回指定名称参数的第一个值,getParameterNames返回指定名称参数数组名称,getParameterValues 返回指定名称参数的值数组,getParameterMap

portlet容器不会将request的参数传播到外面,除非portlet在processAction中,调用了ActionRequest.setRenderParameter。不同portlet之间的request是不可见的。

Attributes可以与JSP及Servlet共享,它用来在普通API无法应用的场合。

Properties由portlet容器指定,用来获取http的某些特性, 包括:content-length, content-type, accept-language等等。前缀为“javax.portlet.”的属性及参数是保留名称。

PortletRequest的生命周期,仅在processAction方法或render调用期间。

PortletResponse
PortletResponse有两个子类: ActionResponse,RenderResponsePortletResponse的主要方法:setProperty,addProperty,encodeURL,sendRedirectActionResponse接口,允许重定向、设置参数、改变窗口状态及模式。setRenderParameterRenderResponse接口,允许设置标题、内容。setContentTypegetPortletOutputStreamgetWriter生命周期:在processAction方法或render调用期间。
Portlet参数
Portlet通过参数来获取各种属性,接口是:PortletPreferencesPortlet只能在processAction调用的时候修改参数。本地化参数,根据ResourceBundle类进行实现。命名规则:’javax.portlet.preference.description.验证:实现:PreferencesValidator,并且必须以线程安全的模式实现,它在JVM中必须是单子的。当有验证器与参数关联时,PortletPreferences.store()必须调用验证器的validate()方法。参数的修改必须是原子性。
会话PortletSession
变量范围定义
一是应用程序级别APPLICATION_SCOPE,二是Portlet级别PORTLET_SCOPE。APPLICATION_SCOPE必须采用前缀表示法来进行属性的存取。当使用PortletSessionUtil类进行属性的访问时,对PORTLET_SCOPE的变量不用采取前缀,建议用取这种方法。
PortletSession与HttpSession的关系
在PortletSession与HttpSession中的属性必须是互相可见的。PORTLET_SCOPE属性必须加上前缀,两种session必须一致。APPLICATION_SCOPE的属性名称必须是一致的。“javax.portlet.”前缀的属性名称是保留的,开发者不能使用。

缓存Cache
超时缓存,不要求实现。使用RenderResponse设置属性可以改变缓存EXPIRATION_CACHE,如果设置为0则不使用缓存,设置为-1则缓存永不过时。在描述文件中没有定义,但程序中设置了的话,会被忽略。

Portlet应用
Portlet应用是一个web应用,并且可以用于不同的portlet容器中。Portlet应用与web应用的关系:由servlet容器管理所有的组件、资料(除portlet外)。Portlet应用与PortletContext的关系:由容器实现一对一。目录结果:/WEB-INF/portlet.xml,/WEB-INF/classes,/WEB-INF/lib,ClassLoader:与servlet同样。
标记库
defineObjects定义了以下几个变量:RenderRequest,RenderResponse,PortletConfigactionURL用来创建URL,定义了以下几个变量:String windowState,String portletMode,String var,String securenamespace定义了当前portlet的一个唯一值,用于输出时确保名称的唯一性,例如javascript函数名。param用来加入到URL中,必须在actionURL的内部定义。例如:”myParam” value=”someValue”/>
定制的Portlet模式
about, config, edit_defaults, priview, print

不允许的标记
基于HTML:base, body, iframe, frame, frameset, head, html, title。基于XHTML:base, body, iframe, head, html, title。不太兼容的标记:link,meta,style。
Portlet标准虽不复杂,但其在整个portal应用中不过是冰山一角。实际上,实现一个portal是一个非常庞大的工程,它几乎等同于一个IDE的开发,Bea WebLogic在这方面可以说是业界的先锋,其IDE环境workshop,已完全集成了Portal的开发,达到了可视化目的,这也是下一节所要详述的。

二 portlet与servlet的关系

Portlet 和 Servlet 算是兄弟有那么一点点相似却又有那么一点点不同,因为 Servlet 和 Portlet 不尽然相同,所以研究小組決定将 portlets 定义成为一个新的组件,因此定义了 portlets 一个新的并且明确的界面与行为。为了尽可能与现有的 servlet 结合达到重复使用的目的,portlet 的规范利用了 servlet 的规范,许多观念都很相似的,结合 portlets、servlets 及 jsp 在同一个网站系统中,我们称为 portlet application 。在同一个 portlet application 中,他们将分享同一个 classloader,context 及 session。

1) Portlet 和 Servlet 的相似之处

@ portlets 也是 Java 技术的 web 组件
@ portlets 也是有特定的 container 在管理
@ portlets 可以动态产生各种内容
@ portlets 的生命周期由 container 所管理
@ portlets 和客户端的互动是通过 request/response 的机制

2) Portlet 和 Servlet 也有一些不同

@ portlets 只产生 markup 信息片段,不是完整的网页文件。而 Portal 会将所有的 Portlet markup 信息片段放到一个完整的 Portal 网页。
@ portlets 不会和 URL 有直接的关系
@ 客户端必须通过 portal 系统才能和 portlets 互动
@ portlets 有一些定义好的 request 处理,action request 以及 render request。
@ portlets 默认定义 portlet modes 及窗口状态可以指出在网页中该 portlet 的哪个功能正在执行及现在的 状态。
@ portlets 可以在同一个 portal 网页之中存在多个。

3) Portlet 有一些附加的功能是 Servlet 所没有的

@ Portlets 能够存取及储存永久配置文件及定制资料。
@ portlets 可以存取使用者数据
@ portlets 具有 URL 的重写功能在文件中去动态建立连结,允许 portal server 不用去知道如何在网页的片 段之中建立连结及动作。
@ portlets 可以储存临时性的数据在 portlet session 之中,拥有两个不同的范围 :
application-wide scope 及 portlet private scope 。

4) Portlet 不具有一些功能,但是 Servlet 却有提供

@ servlet 具有设置输出的文字编码( character set encoding)方式
@ servlet 可以设置 HTTP 输出的 header
@ servlet 才能够接收客户对于 portal 发出的 URL 请求
累了,去读意优休息一下下,QQ空间,美文,非主流,网络日记,搞笑短信,祝福短信,热门短信,有意思啊
0
0
分享到:
评论

相关推荐

    Portlet标准汉化手册

    Portlet与Servlet的主要区别在于,Portlet处理的是局部视图,而Servlet通常处理整个页面的请求。因此,尽管它们都运行在Java环境中,但Portlet更专注于个性化和组件化的交互体验。 在实际应用中,Portlet、Servlet...

    portlet开发参考手册

    事件处理则允许portlet之间或者portlet与用户之间的交互,例如,一个portlet触发一个事件,其他portlet可以监听并响应这个事件。 Web和servlet技术在portlet开发中也起着关键作用。Servlet是Java Web应用的基础,...

    portlet之开发详解(中文)

    开发Portlet需要了解其基础概念、生命周期、与servlet的关系以及开发环境的搭建等。 ### Portlet基础知识 Portlet是Portal页面的一个区域,它类似于Web应用中的servlet,但是它运行在Portal容器中。Portal是一个为...

    portlet开发指南

    请求分发是Portlet开发中的一个重要概念,它允许Portlet与Servlet和JSP页面进行有效的交互。 #### 十六、Portlet标签库 Portlet标签库提供了一系列专门用于简化Portlet开发的HTML标签。这些标签可以帮助开发者更...

    portlet源码,portlet Filter

    在Java世界中,portlet技术主要基于JSR 286(Portlet 2.0 API)标准,它定义了portlet如何与门户服务器交互。本篇文章将深入探讨portlet的类结构以及portlet过滤器和拦截器的实现。 首先,我们来看看portlet的类...

    portlet资料

    - 开发portlet通常需要熟悉Java Servlet API,因为portlet的许多底层机制是基于Servlet技术构建的。 - 开发过程中,portlet可以有两种模式:渲染模式(Render Mode)和动作模式(Action Mode),分别用于处理显示...

    portlet开发以及相应的工具包,如何与tomcat整合

    Tomcat是一个流行的开源Servlet容器,支持Java EE Web应用程序的部署,包括portlet。 2. **构建portlet应用**:使用选定的portlet开发工具包创建portlet项目。这通常涉及配置portlet的Maven pom.xml文件,指定依赖...

    portlet入门介绍

    与传统的Web应用相比,portlet强调了组件化和可重用性,允许开发者独立开发和部署,然后在门户中进行组合。 二、Portlet的工作原理 1. 请求处理:当用户与portlet交互时,例如点击portlet内的按钮,portlet会收到...

    Portlet HelloWorld Pluto2 工程代码

    Portlet与传统的Web应用不同,它并不处理整个页面,而是与多个其他Portlets一起协作构建一个完整的Web页面。每个Portlet有自己的生命周期,包括初始化、渲染、事件处理和动作请求等阶段。在"HelloWorld"工程中,我们...

    Portlet开发指南

    Portlet与servlet的关系**:Portlet可以被视为servlet的一个扩展,它们都遵循类似的生命周期模型,但Portlet还具有更多的功能和约束,以适应Portal环境的需求。例如,Portlet可以响应不同的请求类型,包括渲染请求...

    jquery portlet

    - **View**:视图层,显示模型的数据,通常与DOM元素绑定,当模型数据改变时自动更新视图。 - **Controller**:控制器层,处理用户的输入,更新模型并通知视图刷新。 ### 3. 拖放功能 jQuery UI 提供了强大的拖放...

    Portlet规范介绍.rar

    3. 处理动作请求:用户与portlet交互,如点击按钮,portlet会处理动作请求,可能更新内部状态或执行业务逻辑。 4. 处理资源请求:portlet可以异步处理资源请求,提供动态数据,提高性能。 5. 事件处理:portlet之间...

    Spring Portlet MVC的实例 eclispe project

    9. **Web.xml**:虽然Spring Portlet MVC主要在portlet.xml中配置,但在传统的Web应用中,`web.xml`可能仍然用于定义servlet容器的配置,例如filter和listener。 在实际开发中,这个示例项目可以帮助理解Spring ...

    Stringbeans3.5 加载外部portlet应用

    首先,要理解Stringbeans 3.5的架构,它基于Java Portlet API,该API定义了portlet如何与门户服务器交互。加载外部portlet意味着我们需要将非内置的portlet应用集成到Stringbeans门户中,这通常涉及以下步骤: 1. *...

    IBM portlet api 和 中文教程

    在portlet的通信机制中,portlet与portal服务器之间通过portlet上下文(PortletContext)进行交互,获取portlet配置信息和共享资源。此外,portlet间可以通过公共渲染参数(Public Render Parameters)进行安全的...

    Spring Portlet MVC参考文档(中文版)

    Portlet与Servlet的主要区别在于请求处理的双阶段模式:行动阶段和呈现阶段。行动阶段用于处理数据修改等后端逻辑,而呈现阶段则专注于生成用户界面。这种分离机制确保了状态更新与用户反馈的清晰区分,增强了框架的...

    Spring mvc portlet demo

    Portlet API定义了portlet与portal服务器之间的交互方式,使得portlet可以响应用户的请求并呈现内容。 **Spring MVC Portlet的组件** 1. **Controller** - 控制器负责处理来自portlet的请求,通常通过实现`...

    一个介绍 Portlet如何与容器交互的代码示例

    本篇文章将深入探讨Portlet如何与容器(如Liferay)进行交互,并通过"LifeCycleTest"这个代码示例来详细解析这一过程。 首先,Portlet的生命周期包括初始化、渲染、事件处理、动作处理和销毁五个主要阶段: 1. **...

    portlet 开发

    Portlet是一种小型Web应用程序,它运行在门户服务器上,与门户页面上的其他portlet协同工作,提供特定的功能或内容。portlet类似于传统的Web应用,但它们通过portlet容器进行管理和交互,而不是直接与浏览器通信。 ...

Global site tag (gtag.js) - Google Analytics