什么是Portlet ?

 

      “Portlets是一种Web组件-就像servlets-是专为将合成页面里的内容聚集在一起而设计的。通常请求一个portal页面会引发多个portlets被调用。每个portlet都会生成标记段,并与别的portlets生成的标记段组合在一起嵌入到portal页面的标记内。”(摘自Portlet规范,JSR 168)

本文探讨了以下内容:
1.        Portal页面的元素
2.        Portal
是什么?
3.        Portlets
是什么?
4.        
开发“Hello World” Portlet
5.        
在Pluto上部署HelloWorld Portlet
6.        
如何创建Portal页面
7.        
结束语
8.        
资源

  Portlet规范将portlet定义为一种“基于Java技术的web组件,由处理请求和生成动态内容的portlet容器管理”。这段话听起来是不是有些费解?本文将说明portlets是什么以及能用它们做什么。 

图1显示了在访问一个portal服务器时浏览器中页面的样子。

 

  如果仔细查看浏览器里的页面,就会看到页面是由不同的“窗口”组成的。一个窗口用于刷新天气,另一个用于新闻,还有一个用于刷新股价,等等。这里的每一个窗口都代表了一个portlets。如果看得再仔细些,还会发现每个窗口都有一个标题条和一些按钮,包括最小化和最大化按钮。

  在系统里,这些窗口是相互独立开发、各不同的应用。新闻portlet的开发者创建应用并打包成war格式的文件,随后portal服务器的管理员在服务器上部署该war文件并创建页面,接下来每个用户会选择在他的页面里有哪些应用。例如,如果用户对股价不感兴趣而对体育感兴趣,他可以用“体育”窗口替换“股价”窗口。

  Portlet技术需要学习许多新概念,本文不可能全都涵盖,因此本文分为两部分。在第一部分里我们详细说明portals和portlets,并开发一个简单的“Hello World”portlet;在第二部分我们将探讨一些高级主题。

  我们将用Apache的Pluto服务器(Portlet API 1.0规范的参考实现)来测试我们的示例portlets,我们还会花些时间探讨如何安装和使用Pluto服务器。

Portal页面的元素

图2显示了Portal页面的各种元素。



图2 portal页面的元素

  每个portlet页面由一个或多个portlet窗口组成,每个portlet窗口又分为两部分:一个是外观,它决定了portlet窗口的标题条、控制和边界的样式;另一个是portlet段,它由portlet应用填充。

  Portal服务器决定了portal页面的整体观感,像标识、标题条颜色、控制图标等。通过修改几个JSP和css模板文件就可以改变portal的整个观感。我们将在“如何创建portal页面”部分对此做深入讨论。


Portlets是什么?

  与servlets类似,portlets是部署在容器内用来生成动态内容的web组件。从技术角度讲portlet是一个实现了javax.portlet.Portlet接口的类,它被打包成war文件格式部署到portlet容器里。

  Portlets在以下方面与servlets相似:
1.        portlets由特定的容器管理。
2.        portlets生成动态内容。
3.        portlet的生命周期由容器管理。
4.        portlets通过请求/响应模式与web客户端交互。

  Portlets在以下方面与servlets相异:
1.        portlets只能生成标记段,而不是整个文档。
2.        portlets没有可供直接访问的URL地址。不过你还是能够让别人通过URL访问到portlet,你可以把包含该portlet的页面的URL发给他。
3.        portlets不能随意地生成内容,这是因为portlet生成的内容最终要成为portal页面的一部分。如果portal服务器要求的是html/text类型,那么所有的portlets都应生成html/text类型的内容。再比方说,如果portal服务器要求的是WML类型,那么所有的portlets都应生成WML类型的内容。

  portlets还提供了一些附加的功能:
1.        设置参数的持久化存储:portlets提供了一个PortletPreferences对象用来保存用户的设置参数。这些参数被存入一个持久化数据库,这样服务器重启后数据依然有效。开发者不必关心这些数据存储的具体实现机制。
2.        请求处理:portlets提供了更为细粒度的请求处理。对于用户在portlet上动作时向该portlet发出的请求(一种称为活跃期的状态),或者因用户在其它portlet上动作而引发的刷新页面请求,Portal服务器提供了两种不同的回调方法来处理。
3.        Portlet模式:portlets用模式的概念来表示用户在做什么。在使用mail应用的时候,你可能会用它来读信、写信或检查信件――这些都是mail应用的预定功能,Portlets通常以VIEW模式提供这些功能。但还有一些活动,像指定刷新时间或(重新)设置用户名和密码,这些活动允许用户定制应用的行为,因此它们用的是EDIT模式。Mail应用的帮助功能用的是HELP模式。

  如果仔细想想其实这里面并没有什么新东西,它们反而大部分都是普通的业务需求。Portlet规范的作用在于它提供了一个抽象层,这才是它对所有与之相关的人-最终用户、开发者和管理员-的价值所在。

  作为一个开发者,我会将所有与VIEW模式有关的业务逻辑放入doView()方法,将与应用配置有关的业务逻辑放入doEdit()方法,将与帮助有关的逻辑放入doHelp()方法

  这就简化了管理员对portlet应用的访问控制管理,因为他只需改变portlet的访问权限就能决定用户能做什么。例如,如果mail应用的一个用户能够在EDIT模式下设定用户名和密码,那么就可以断定他具有EDIT模式访问权限。

  不妨考虑这样一种情形:我是一个intranet网站的管理员,我的公司买了一个能显示新闻信息的第三方portlet应用,该应用允许用户指定跟踪新闻更新的URL地址,我想借助它为用户显示公司的内部新闻。另一个需求是我不想让用户通过该应用来跟踪任何其它的新闻信息来源。作为管理员,我可以为所有的用户指定一个用于内部新闻更新的URL地址,同时通过改变portlet应用的部署描述符来取消其它人修改该地址的权限。

  由于所有的portlet应用都具有相似的UI界面,因此采用portlets可使网站对最终用户更具吸引力。如果她想阅读任何一个应用的帮助信息,她可以点击帮助按钮;她也知道点击编辑按钮能让她进入应用的配置屏。标准化的用户界面使你的portlet应用更引人。

4.        窗口状态:窗口状态决定了portal页面上留给portlet生成内容的空间。如果点击最大化按钮,portlet将占据整个屏幕,成为用户唯一可用的portlet;而在最小化状态,portlet只显示为标题条。作为开发者应当根据可用空间的大小来定做内容。

5.        用户信息:通常portlets向发出请求的用户提供个性化的内容,为了能更加行之有效,portlets需要访问用户的属性信息,如姓名、email、电话等。Portlet API为此提供了用户属性的概念,开发者能够用标准的方式访问这些属性,并由管理员负责在这些属性与真实的用户信息数据库(通常是LDAP服务器)之间建立映射关系。

  我们将在本文的第二部分深入讨论这些特点-请求处理、用户信息和portlet模式。

开发"Hello World" Portlet

  现在我们就来开发一个简单的HelloWorld portlet。
1.  创建一个名为HelloWorld的web项目,它与通常的servlet项目类似,有一个/WEB-INF/web.xml文件作为项目的部署描述符。

2.  在build path里加入portlet-api-1.0.jar文件,该jar文件是Pluto发行包的一部分。

3.  在Source文件夹中按如下内容创建HelloWorld.java文件: 

ContractedBlock.gif ExpandedBlockStart.gif Code
1 public class HelloWorld extends GenericPortlet{
2     protected void doView(RenderRequest request,RenderResponse response) throws
3   PortletException, IOException {
4         response.setContentType("text/html");
5         response.getWriter().println("Hello Portlet");
6     }
7 }
8 



  每个portlet都要实现Portlet接口,该接口为portlet定义了生命周期方法。由于不想覆盖所有这些方法,我们只对GenericPortlet类进行扩展,它是一个实现了Portlet接口的适配器类。GenericPortlet类提供了所有生命周期方法的默认实现,所以我们只需实现我们所需要的方法。

  我们在 HelloWorld portlet里要做的只是显示“Hello Portlet”,所以我们将覆盖GenericPortlet类的doView()方法,该方法以PortletRequest 和 PortletResponse作为参数。在doView()方法中首先调用response.setContentType()以通知portlet容器该portlet将要生成何种类型的内容-如果不这样做就会导致IllegalStateException异常。一旦设置了内容的类型,就可以从response对象中获得PrintWriter并开始写入。

4.  每个portlet应用在/WEB-INF文件夹中都有一个portlet.xml文件,它是portlet应用的部署描述符。按以下内容创建portlet.xml文件:

ContractedBlock.gif ExpandedBlockStart.gif Code
 1 <portlet>
 2    <description>HelloWorldDescription</description>
 3    <portlet-name>HelloWorld</portlet-name>
 4    <display-name>Hello World</display-name>
 5    <portlet-class>com.test.HelloWorld</portlet-class>
 6    <expiration-cache>-1</expiration-cache>
 7    <supports>
 8       <mime-type>text/html</mime-type>
 9       <portlet-mode>VIEW</portlet-mode>
10    </supports>
11    <supported-locale>en</supported-locale>
12    <portlet-info>
13       <title>Hello World</title>
14       <short-title>Hello World</short-title>
15       <keywords>Hello,pluto</keywords>
16    </portlet-info>
17 </portlet>
18 

 

  <portlet-name>元素声明了portlet的名字,<portlet-class>元素指定了portlet的全限定类名,<expiration-cache>元素以秒为单位指定了内容超期的时间。这里面有一点需要注意:你在portlet上的某些动作可能会导致内容刷新,这与缓存时间无关。
  <supports>元素指定对于给定的<mime-type>有哪些模式可供支持。在示例中我们假定HelloWorld只能生成text/html类型的内容,且只有view模式可支持该内容类型。如果要增加对其它内容类型的支持,需要添加新的<support>元素并指定支持该MIME类型的模式有哪些。通常portlet对于text/html类型有VIEW、EDIT和HELP模式可供支持,而对于WML MIME类型则只有VIEW模式。
  还可以用<supported-locale>元素来指定portlet支持哪些本地化。<title>元素用来指定portlet的标题。如果要对标题做国际化处理,可以用元素<resource-bundle>指定资源(比例properties文件)的文件名。在这种情况下,容器将根据用户所在的地区从适当的properties文件中选择标题。

5.   每个portlet应用都是一个web应用,因此除了portlet.xml文件之外还需要有web.xml文件。

ContractedBlock.gif ExpandedBlockStart.gif Code
1 <web-app>
2    <display-name>Hello World Portlet</display-name>
3    <welcome-file-list
4       <welcome-file>index.jsp</welcome-file>
5    </welcome-file-list>
6 </web-app>
7 



6.   接下来将这些文件进行编译并打包为war文件。你可以自己完成这些工作,或者下载带有build.xml 的示例代码(参见“资源”部分)来创建war文件。
在Pluto上部署HelloWorld Portlet

  Pluto尚处于开发阶段的早期,因此还没有一套易于使用的管理工具。为了能使用Pluto服务器,需要将编译和源代码两个版本都下载。需要注意的是以下说明是针对Windows平台的,Unix用户通过修改斜杠符号和执行sh shell脚本(不是bat批命令文件)会得到类似的结果。

1.  创建一个文件夹,比如C:\PlutoInstallation。
2.  从Pluto的网站下载pluto-1.0.1-rc1.zip和pluto-src-1.0.1-rc1.zip。
3.  将pluto-1.0.1-rc1.zip解压到C:\PlutoInstallation.文件夹,它应被解压到C:\PlutoInstallation\pluto-1.0.1-rc1文件夹下。
4.  执行C:\PlutoInstallation\pluto-1.0.1-rc1\bin\startup.bat启动Pluto,现在可以通过地址http://localhost:8080/pluto/portal访问Pluto服务器。
5.  将pluto-src-1.0.1-rc1.zip解压到C:\PlutoInstallation\PlutoSrc文件夹。
6.  进入C:\PlutoInstallation\PlutoSrc文件夹,执行maven distribute:all.,编译并下载运行常规管理任务所必需的相关资源文件。现在可以将HelloWorldPortlet.war作为portlet进行安装了。
7.  首先将HelloWorldPortlet.war文件拷贝到C:\PlutoInstallation\portlets目录,如果没这个目录就创建它。
8.  将C:\PlutoInstallation\plutosrc\build.properties.sample更名为build.properties。
9.  编辑build.properties,将maven.tomcat.home指向Pluto编译版的安装位置,在本例中应改为maven.tomcat.home=C:/PlutoInstallation/pluto-1.0.1-rc1。
10. 为了安装portlet,进入C:\plutoInstallation\plutosrc\deploy文件夹,执行maven deploy -Ddeploy=c:\PlutoInstallation\portlets\HelloWorldPortlet.war,应能看到“build successful”信息。
11. 在C:\PlutoInstallation\pluto-1.0.1-rc1\webapps文件夹下,应该有一个HelloWorldPortlet文件夹。
12. 现在进入C:\PlutoInstallation\pluto-1.0.1-rc1\webapps\HelloWorld\WEB-INF\ folder文件夹,打开portlet的web.xml文件,你会发现里面自动多了几行,如下所示:

ContractedBlock.gif ExpandedBlockStart.gif Code
 1 <servlet>
 2    <servlet-name>HelloWorld</servlet-name>
 3    <display-name>HelloWorld Wrapper</display-name>
 4    <description>Automated generated Portlet Wrapper</description>
 5    <servlet-class>org.apache.pluto.core.PortletServlet</servlet-class>
 6    <init-param>
 7       <param-name>portlet-class</param-name>
 8       <param-value>com.test.HelloWorld</param-value>
 9    </init-param>
10    <init-param>
11       <param-name>portlet-guid</param-name>
12       <param-value>HelloPluto.HelloWorld</param-value>
13    <init-param>
14 </servlet>
15 

 

13.  接下来我们将该portlet加到页面里。进入C:\PlutoInstallation\pluto-1.0.1-rc1\webapps\pluto\WEB-INF\data文件夹,可以看到有两个XML文件:pageregistry.xml和portletentityregistry.xml。
14.  portletentityregistry.xml包含了portlet的定义,在该文件中加入以下几行:

ContractedBlock.gif ExpandedBlockStart.gif Code
1 <application id="5">
2    <definition-id>HelloWorld</definition-id>
3    <portlet id="1">
4       <definition-id>HelloWorld.HelloWorld</definition-id>
5    </portlet>
6 </application>

  应用的<definition-id>应为web应用所在文件夹的名字,portlet的<definition-id>应与web.xml中生成的portlet-guid相一致。
15.  pageregistry.xml定义了页面中包含了哪些portlets,对该文件做如下改动:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
1 <fragment name="p2" type="portlet">
2     <property name="portlet" value="5.1"/>
3 </fragment>
4 


16.  执行shutdown命令和startup命令重启Pluto服务器,返回到地址http://localhost:8080/pluto/portal并点击“Test Link”-此时页面中将出现我们的   HelloWorld portlet。

图3的右侧显示了HelloWorld portlet看上去的样子。
*

图3 portlet的屏幕截图

如何创建Portal页面

图4显示了portal容器如何将分离的portlets组装为页面。


图4 创建Portal页面

  大部分的portal服务器基本上都是部署于应用服务器上的web应用,通过servlet来处理访问portal服务器的请求。查看一下Pluto的安装目录就会发现Pluto不过是一个部署于Tomcat服务器上的一个普通web应用,再看看C:\PlutoInstallation\pluto-1.0.1-rc1\webapps\pluto\WEB-INF\web.xml会发现所有发往Pluto服务器的请求都被映射到org.apache.pluto.portalImpl.Servlet上。

  在本文开始部分“Portal页面的元素”中,我们提到portal页面由两部分组成。一部分是由页面中的portlets生成的内容,另一部分是由portal服务器生成的内容。

  在Pluto里,只要用户发出请求,就会由servlet进行控制,根据用户所请求的页面来确定需要显示的portlets的列表。一旦生成了列表,servlet就将控制转给这些portlets线程并收集由它们生成的内容。

  对于由portal服务器生成的内容(像portal网站的观感及每个portlet的外观和控制之类)则取决于C:\PlutoInstallation\pluto-1.0.1-rc1\webapps\pluto\WEB-INF\aggregation文件夹下的JSP文件。RootFragment.jsp是主JSP文件,它决定了整体的观感和对齐方式;它还包含了Heads以定义在生成的页面中的<HEAD>标签里的内容。TabNavigation.jsp用来选择在banner中该显示什么(默认情况下在banner显示列表中也包扩了pluto.png图片)。TabNavigation.jsp用来确定portal网站的导航方案。这意味着只需改动该文件夹下少量的几个JSP文件,就能改变整个portal网站的观感。

  Pluto根据pageregistry.xml中的设置确定页面中有多少行,并用RowFragment.jsp去填充。ColumnFragment.jsp用来填充每个栏目。PortletFragmentHeader.jsp用来填充每个portlet的页头,像标题条及最大化和最小化控制。footer.jsp用来填充JSP的页脚。如果去看一下portal页面的HTML代码就会发现每个portlet窗口无非都是嵌入<TD>标签的内容块。

结束语

  任何一种新技术要想获得成功都应具备以下条件:首先,它能提升现有技术;其次,它能解决现有技术遇到的普遍问题;再次,它能提供多于一个的抽象层(有人说,每抽象出一层,问题就解决一半)。

  由于portlet与现有的应用服务器架构兼容,这对Portlet API来说是一次发展servlet技术的好机会。你可以从portlet里调用EJB,或者用它启动和参与由应用服务器控制的全局性事务。换句话说,在以商业逻辑为核心的领域里,portlet完全可以做得和servlet一样好。

  Portlets提供了一个抽象层,现在你不必再担心客户端使用了什么样的HTTP方法,也不必自己编写程序去捕获像点击按钮这样的客户端事件。最后但绝不是最次要的一点是,portlets以提供像单次登录、个性化等服务的方式解决了servlets不能解决的大部分问题。

原文地址:http://www.onjava.com/pub/a/onjava/2005/09/14/what-is-a-portlet.html
中文地址:http://www.matrix.org.cn/resource/article/44/44029_Portlet.html
 

Portlet 开发指南 Portlet 开发指南  目录 Portlet 开发指南...............................................................................................................................1 第一章节入门介绍............................ 阅读详情

相关推荐

基于Portal和Portlet技术的Web整合应用研究与实现

基于Portal和Portlet技术的Web整合应用研究与实现基于Portal和Portlet技术的Web整合应用研究与实现基于Portal和Portlet技术的Web整合应用研究与实现基于Portal和Portlet技术的Web整合应用研究与实现

[Portal参考手册]Portlet概念

1. Portlet概念 Portlet 是可以提供对基于 Web 的内容、应用程序和其它资源访问的可重用组件。可通过 portlet 访问 Web 页面、web 服务、应用程序和成为企业组合的内容供给。公司可以创建他们自己的 portlet 或从第三方 portlet 目录中选择 portlet。portlet 是打算被组装成更大的门户网站页面,其中同一 portlet 的多个实例为...

243

opencv 常用函数总结

本文是一份OpenCV图像处理的常用函数总结,详细介绍了图像的读入、显示、保存、像素处理、图像属性获取、基础操作、阈值处理、图像平滑、形态学转换以及直方图处理等关键技术。文章通过代码示例和参数说明,帮助读者快速掌握OpenCV在图像处理领域的应用。

weixin_44063529的博客 1600

portlet 概念

portlet 是可再用的 Web 模块,它们在门户网站服务器上运行,并提供对基于 Web 的内容、应用程序和其他资源的访问。公司可以创建它们自己的 portlet 或从第三方 portlet 编目中选择 portlet。portlet 用于组装成更大的门户网站页面,其中同一 portlet 的多个实例为每个用户显示不同的数据。从用户的角度来看,portlet 是门户网站站点中提供特定服务

小白的一生 1411

告别配置噩梦:用Vcpkg三行命令为Easy3D自动安装Boost、CGAL和Qt(VS2022实测)

本文详细介绍了如何使用Vcpkg工具在VS2022环境下为Easy3D项目一键安装Boost、CGAL和Qt等依赖库,解决传统手动配置的复杂性问题。通过三行简单命令即可自动完成下载、编译和路径配置,大幅提升开发效率,特别适合C++开发者快速搭建3D图形开发环境。

weixin_42525582的博客 210

Dify社区版多工作空间功能解锁:源码修改与多租户架构解析

多租户架构是现代SaaS平台实现数据隔离与资源管理的核心技术,其核心原理是通过租户模型将用户、应用和数据在逻辑上隔离。在AI应用开发平台中,这种架构能有效支持多团队、多项目并行开发,确保不同业务线的数据安全与独立迭代。Dify作为开源AI应用构建平台,其底层已设计完善的多租户模型,但社区版默认限制了单用户单工作空间。本文通过精准修改两处关键代码——账户初始化逻辑与系统功能开关,释放了平台固有的多工作空间管理能力。该方案无需改动数据库结构,直接利用现有RBAC权限体系,实现了类似企业版的**多租户隔离**体验

weixin_27059669的博客 1061

Portlet

Portlet是基于java的web组件,由portlet容器管理,并由容器处理请求,生产动态内容。Portal使用portlet作为可插拔用户接口组件,提供信息系统的表示层。作为利用servlets进行web应用编程的下一步,portlets实现了web应用的模块化和用户中心化。portlet规范,即jsr(Java Standardization Request )168,是为了实现portal和portlet的互操作。它定义了portlet和portlet容器之间的合约,让portlet实现个性化、表

四火专栏 2593

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析了Facebook登录协议的逆向工程实战,详细拆解了从关键加密参数(如`lgndim`、`encpass`)定位到完整登录流程的实现。文章提供了Python代码示例,重点阐述了加密逻辑的深度解析、加密函数的本地化实现,并解决了Crypto.js异步调用等常见问题,为研究Web安全和协议逆向的开发者提供了实用参考。

metal的博客 1311

什么是Portlet

Portlets “Portlets是一种Web组件-就像servlets-是专为将合成页面里的内容聚集在一起而设计的。通常请求一个portal页面会引发多个portlets被调用。每个portlet都会生成标记段,并与别的portlets生成的标记段组合在一起嵌入到portal页面的标记内。”(摘自Portlet规范,JSR 168)本文探讨了以下内容:1.        Portal页面的元素

键者天行 2万+

GD32F427移植LiteOS-M实战:如何快速复用官方Demo进行二次开发

本文详细介绍了如何在GD32F427开发板上移植LiteOS-M操作系统,通过复用OpenHarmony官方Demo快速构建RTOS工程。文章涵盖环境搭建、芯片配置迁移、中断向量表处理和外设驱动适配等关键步骤,并提供了调试技巧和二次开发进阶建议,帮助开发者高效完成移植工作。

weixin_33736048的博客 415

74.9008深度刷机原理|高通QPST/Firehose底层刷写协议详解

移动设备刷机与底层维修技术指南 本文为移动设备维修人员和高级玩家提供全面的刷机与底层维修技术指南,涵盖高通、联发科和苹果A系列芯片的主要操作。 主要内容 核心操作:Bootloader解锁、Fastboot刷写、EDL深度修复、iTunes DFU模式恢复和分区表重建 适用场景:系统故障修复、底层损坏恢复、安全限制解除、系统降级和深度硬件维修 关键技术:详细解析刷机协议栈层级、关键分区作用和刷机安全机制 操作步骤: 环境搭建与驱动安装 Bootloader解锁(以小米为例) 高通机型系统刷写 苹果设备DFU

2601_95651806的博客 205

Portlet API

本节提供了 Portlet API 的简要描述。概述 Portlet 概念 Portlet API 的元素 核心对象 侦听器 配置对象 杂项对象 Portlet 事件 PortletService 部署描述符 概述Portlet 是可以提供对基于 Web 的内容、应用程序和其它资源访问的可重用组件。可通过 portlet 访问 Web 页面、we

Steven_zhao的专栏 3941

【Bug已解决】Context window exceeded / Token limit reached — Claude Code 上下文窗口超限解决方案

Claude Code 长会话中报上下文窗口/Token 超限,本质是对话历史、文件内容、工具结果累积超过 200K 上限。文中给出 /clear、/compact、分批读大文件、限制工具输出、配置 autoCompact 等完整方案。

一键难忘的博客 6728

利用Spring Portlet MVC 开发一个简单的Portlet的全部过程

  1.创建web.xmlcontextConfigLocation /WEB-INF/context/application-context.xml

liuxiIT的专栏 1万+

QT实现OPCUA服务端客户端(附完整源码)

QT实现OPCUA服务端客户端(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1821

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

portlet

1. Portlet Preferences : This article introduces what is portlet, which actually is a web conponent that can be reused, and portlet preference. A portlet preference is a named piece of string data. Fo

Newweapon's Trace 1067

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WebSphere Portal Portlet API

本节提供了 Portlet API 的简要描述。概述 portlet 概念 Portlet API 的元素 核心对象 侦听器 配置对象 杂项对象 portlet 事件 PortletService 部署描述符 概述portlet 是可以提供对基于 Web 的内容、应用程序和其它资源访问的可重用组件。可通过 portlet 访问 Web 页面、we

Steven_zhao的专栏 2185

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Portlet 入门

                                                                       什么是Portlet ?Portlets “Portlets 是一种Web组件-就像servlets-是专为将合成页面里的内容聚集在一起而设计的。通常请求一个portal页面会引发多个portlets被调用。每个portlet都会生成标记段,并与别的po

James的专栏 1862

Portlet概念

Portlet概念Portlet 是可以提供对基于 Web 的内容、应用程序和其它资源访问的可重用组件。可通过 portlet 访问 Web 页面、web 服务、应用程序和成为企业组合的内容供给。公司可以创建他们自己的 portlet 或从第三方 portlet 目录中选择 portlet。portlet 是打算被组装成更大的门户网站页面,其中同一 portlet 的多个实例为每个用户显示不同

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 1479

portlet_Portlet教程

portletWe’ve introduced all of these concepts that would be used while you’re dealing with the Portlet development. Portlet and Portlet container had used several objects that make obligation between ...

从零开始的教程世界 366

有关portlet和servlet

 什么是Portal?Portal是一个基于web的应用程序,它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。什么是Portlet?Portlet是基于java技术的web组件,它由portlet容器管理、并处理请求,并动态生成输出内容。Portlet的输出是一个片段,即不是一个完整的页面。Portal标准为规范Portal,SUN于2003年底制定了JSR168,它定

gregbond的专栏 4813

Portlet开发基知识

1.portlet.xml文件,放置在WEB_INF/portlet.xml下面。典型的例子:Description goes herefirstcom.malani.examples.portlets.jsr168.FirstPortletFirstportlet-class就是实现的类。可以和web.xml对照比较一下。2.实现的Portlet类。和传统的servlet一样,portal容器来

zl198183的专栏 3370

Portlet 参数选项

以下文字转载自:http://dev2dev.bea.com.cn/techdoc/200403134.htmlPortlet 参数选项提供了将应用程序数据与 portlet 关联到一起的首选方式。 这一特性是基于其用途来个性化portlet的关键。在本文中,我们将详细讲述 portlet 参数选项。 Portlet 参数选项提供了将应用程序数据与 portlet 关联到一起的首选方式。

徐明明的博客 3030

Java Portlet 规范概述

首先,解释几个基本的术语。 1)Portal Portal 是一种 web 应用,通常具有个性化、单点登录、来自不同源的内容聚合(aggregation)并提供信息系统表现层等特点。所谓聚合,是指将不同来源的内容整合到一个 web 页面的操作。一个 Portal 应用可通过复杂的个性化配置为用户提供定制的内容,而 Portal 页面也可含有不同的 portlet 为不同的用户生...

angie 1831
上一篇: Ruby 中模块
下一篇: portlet 与 servlet 的关系
小坏蛋rubys
博客等级 码龄18年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值