servelet portlet比较(由于公司只能上技术网站,所以将这篇文章转载到csdn,方便在公司看)

转载 2007年10月01日 00:38:00
portlet上下文

PortletContext实现,必须与ServletContext一致。主要方法:getPortalInfogetPropertygetPropertyNamesgetSupportedPortletModesgetSupportedWindowStates

PortletRequest

PortletRequest有两个子类: ActionRequest,RenderRequest

主要方法:

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

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

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

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

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

PortletResponse

PortletResponse有两个子类: ActionResponse,RenderResponse
PortletResponse的主要方法:setProperty,addProperty,encodeURL,sendRedirect
ActionResponse接口,允许重定向、设置参数、改变窗口状态及模式。
 setRenderParameter
RenderResponse接口,允许设置标题、内容。
setContentType
getPortletOutputStream
getWriter
生命周期:在processAction方法或render调用期间。

Portlet参数

Portlet通过参数来获取各种属性,接口是:PortletPreferences
Portlet只能在processAction调用的时候修改参数。
本地化参数,根据ResourceBundle类进行实现。
命名规则:’javax.portlet.preference.description.
验证:
实现:PreferencesValidator,并且必须以线程安全的模式实现,它在JVM中必须是单子的。
当有验证器与参数关联时,PortletPreferences.store()必须调用验证器的validate()方法。
参数的修改必须是原子性。

会话PortletSession

变量范围定义

一是应用程序级别APPLICATION_SCOPE二是Portlet级别PORTLET_SCOPE
APPLICATION_SCOPE必须采用前缀表示法来进行属性的存取。
当使用PortletSessionUtil类进行属性的访问时,对PORTLET_SCOPE的变量不用采取前缀,建议用取这种方法。

PortletSessionHttpSession的关系

PortletSessionHttpSession中的属性必须是互相可见的。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,PortletConfig
actionURL用来创建URL,定义了以下几个变量:String windowState,String portletMode,String var,String secure
namespace定义了当前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 请求
 

相关文章推荐

结构体、共用体、指针

union testc { int ua; char tmp[4]; }; struct testb { int pc; int pd; }; struct testa { struct t...

傻孩子菜单框架

转载自:http://blog.csdn.net/yangluoning/article/details/9313677

一个按键液晶多级菜单设计方法

typedef struct {  uchar  KeyStateIndex ;   / / 当前状态索引号  uchar  KeyDnState ;   / / 按下“向下”键时转向的状...

12864液晶菜单设计-转子傻孩子

转子:http://write.blog.csdn.net/postedit 为什么菜单被叫做菜单,我想起原因已经无从查考了,这个问题上我再掉故纸堆,罗列一堆各家之言,怕又是要挨骂了。不管你...

在csdn首页上看到这篇文章感觉不错,让我们共勉。

程序员阿士顿的故事前几天有人在 Stack Exchange 上提了一个问题 How can a new programmer impress the software engineer (boss)...

由这篇文章引发的思考“技术控解释为什么Android没有iOS那么顺滑”

CSDN首页今天有篇关于Android UI和iOS UI作对比的文章:《技术控解释为什么Android没有iOS那么顺滑》:http://mobile.csdn.net/a/20111207/308...

认识DTD从这篇文章开始

  • 2011-12-19 10:51
  • 2.46MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)