» 搜索提示 
 
开发 Portlet 应用程序
2006 年 1 月 [修订号:V2-2]  
本教程介绍了如何使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 开发一个用于提供门户内容的、与 JSR-168 兼容的 JavaServer Faces Portlet 应用程序。门户是基于用户输入为来自各种源的内容提供定制视图的 Web 站点。门户服务器包含用于生成定制 Web 内容片段的 Portlet,并组装(或聚合)各片段以创建定制 Web 页。

开发 Portlet 应用程序与开发 Web 应用程序类似。在学习本教程之前,您需要熟悉应用程序的开发过程。为此,请学习任何 Java Studio Creator 教程。Java Studio Creator 入门指南是对 IDE 的介绍。
 
目录
 
关于 Portlet
创建 Portlet 项目
添加查看模式页
设置页面导航
添加编辑和帮助模式页
将 Web 服务添加到 Portlet
创建会话 Bean 属性
执行其他的 Portlet 操作
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 
如果您处于防火墙的保护下,则需要配置 IDE 的服务器属性来设置 HTTP 代理服务器
 

关于 Portlet

 
开发 Portlet 与开发常规 Web 应用程序类似,但它们处理某些任务(如通过在一个页上执行操作在另一页上设置值)的方式是不同的。此外,JSR-168 标准定义了以下三种 Portlet 模式(这些模式决定 Portlet 所显示内容的类型):
  • 查看。查看模式生成用户与之交互的 Portlet 页面,为缺省模式。
  • 编辑。编辑模式使户可以定制 Portlet 的行为。
  • 帮助。帮助模式提供 Portlet 的帮助信息。
每种模式都独立于其他模式,具有自己的页面导航,并通过执行特定操作访问。例如,在与 IDE 捆绑在一起的 Apache Pluto 门户服务器中,用户可以通过单击门户服务器的“编辑”、“帮助”和“查看”按钮来切换模式。有关 Pluto Portal 服务器的详细信息,请参见 Apache Pluto 门户项目站点
 
在本教程中,您将学习如何创建查看模式页、编辑模式页和帮助模式页,以及如何为编辑模式和帮助模式指定初始页。接下来,您将学习如何通过在会话 Bean 上创建和设置属性,来使用按钮在 Portlet 页面上设置值。最后,您将学习如何从 Portlet 访问 Web 服务。
 

创建 Portlet 项目

 
  1. 在主菜单中,选择“文件”>“新建项目”。

  2. 在“新建项目”向导中,从“类别”列表中选择 "Web",然后从“项目”列表中选择“JSR-168 JSF Portlet 项目”。

  3. 单击“下一步”。

  4. 将项目命名为 PortletEx

  5. 单击“下一步”。将打开“Portlet 部署描述符”窗口,如下图所示。

    图 1:“Portlet 部署描述符”对话框
    图 1:“Portlet 部署描述符”对话框
     
  6. 单击“完成”以接受缺省值。

    PortletEx 的初始页 PortletPage1 在可视设计器中打开,如下图所示。

    图 2:初始 Portlet 页
    图 2:初始 Portlet 页
     
缺省情况下,IDE 将在查看模式下创建页。PortletPage1 是查看模式下的缺省初始页。
 
请注意,Portlet 项目的设计视图网格的一部分带有阴影。设计视图网格的白色部分是在门户服务器中显示的内容。回想一下,您要生成一个 Web 内容片段,门户服务器将该片段聚合到完整 Web 页中。
 
可以使用“属性”窗口中的“页面布局”下拉列表,选择 Portlet 页面布局。流布局允许 Web 浏览器确定页面布局。选择“流布局”后,您几乎不可以控制 Web 浏览器呈现页面的方式。网格布局可以辅助组件在 Portlet 页面上的绝对定位:所见即所得。网格布局不仅是首选的布局模式,而且也是常规 Web 应用程序以及 Portlet 应用程序的缺省布局模式。在本教程中,您将使用网格布局。
 

添加查看模式页

 
在本部分中,您将创建两个查看模式页,每个页都包含一个静态文本字段和一个用于导航到另一页的按钮,如下图所示。
 
图 3:页面设计
图 3:页面设计
 
  1. 将一个“静态文本”组件拖动到 Portlet 页面上,并将其 text 属性更改为 Welcome to Page 1

  2. 将一个“按钮”组件拖动到页面上,并将其 text 属性更改为 Go To Page 2

  3. 在“项目”窗口中,右键单击 "PortletEx" >“Web 页”,然后从弹出式菜单中选择“新建”>“Portlet 页”。

    将打开“新建 Portlet 页”向导。

  4. 在“文件名”字段中键入 PortletPage2(没有空格),然后单击“完成”。

    PortletPage2 将在可视设计器中打开。

  5. 将一个“静态文本”组件拖动到页面上,并将其 text 属性更改为 Welcome to Page 2

  6. 将一个“按钮”组件拖动到页面上,并将其 text 属性更改为 Go To Page 1
 

设置页面导航

 
  1. 在可视设计器中的任意位置单击鼠标右键,然后从弹出式菜单中选择“面页导航”。

    将打开“页面导航”窗口。

  2. 单击 PortletPage1.jsp 图标,从 PortletPage1.jsp 上的按钮拖动到 PortletPage2.jsp,然后键入 GotoPage2 以更改连线名称。

  3. 单击 PortletPage2.jsp 图标,从 PortletPage2.jsp 上的按钮拖动到 PortletPage1.jsp,然后键入 GotoPage1 以更改连线名称。

  4. 单击工具栏上的“运行”按钮部署 Portlet 应用程序。

    Portlet 将显示在 Web 浏览器的“Apache Pluto 门户”服务器窗口中。

    单击 "Go To Page 2" 按钮时,Apache Pluto 门户服务器将显示 PortletPage2,如下图所示。单击 "Go To Page 1" 按钮将返回到 PortletPage1。

    图 4:Portlet 的第二页
    图 4:Portlet 的第二页
     

添加编辑和帮助模式页

 
在 Apache Pluto 门户服务器中,用户可以单击“查看”、“编辑”或“帮助”按钮来切换模式。下图显示了 Pluto 门户服务器的模式导航按钮。
 
图 5:门户模式导航
图 5:门户模式导航
 
切换模式再返回到以前模式时,用户将返回到以前模式的初始页,而不是他们所查看的最后一页。例如,如果用户在查看模式下导航到第二页,切换到编辑模式,然后切换回查看模式,则用户将返回到查看模式的第一页而不是第二页。
 
在此处您可以确定切换模式时用户看到的初始页。
 
  1. 创建新的页面。在“项目”窗口中,右键单击 "PortletEx" >“Web 页”,然后选择“新建”>“Portlet 页”。将新的 Portlet 页命名为 Edit1,然后单击“完成”。

  2. 将一个“标签”组件拖动到页面上,然后键入 Welcome to Edit Mode!

  3. 在“项目”窗口中,右键单击 "PortletEx" >“Web 页”> "Edit1.jsp",然后从弹出式菜单中选择“设置为初始页”>“编辑模式页”。

  4. 生成并运行 Portlet 应用程序。单击 Pluto 门户服务器的“编辑”按钮以查看页,如下图所示。

    图 6:编辑模式页
    图 6:编辑模式页
     
下面将按照类似的过程设置帮助模式的初始页。
 
  1. 创建新的页面。在“项目”窗口中,右键单击 "PortletEx" >“Web 页”,然后选择“新建”>“Portlet 页”。将新的 Portlet 页命名为 Help1

  2. 将一个“标签”组件拖动到页面上,然后键入 Welcome to Help Mode!

  3. 在“项目”窗口中,右键单击 "PortletEx" >“Web 页”> "Help1.jsp",然后从弹出式菜单中选择“设置为初始页”>“帮助模式页”。

  4. 生成并运行 Portlet 应用程序。单击 Pluto 门户服务器的“帮助”按钮以查看页。

  5. 通过选择“文件”>“关闭 "PortletEx"”,关闭 PortletEx 项目。
在下一部分中,您将创建一个新的 Portlet 项目,并为其添加 Web 服务。
 

将 Web 服务添加到 Portlet

 
在本部分中,将 WorldTime 样例 Web 服务添加到 Portlet,并通过单击同一页上的按钮来学习如何在页面上设置值。页面设计与下图类似。
 
图 7:WorldTime 服务的页面设计
图 7:WorldTime 服务的页面设计
 
  1. 创建一个新的 JSR-168 JSF Portlet 项目,并将其命名为 PortletWS。

  2. 将一个“按钮”组件从组件面板的“基本”类别拖动到 PortletPage1 上,键入 The time is...,然后按 Enter 键。在“属性”窗口中,将其 id 属性设置为 timeButton

  3. 将一个“静态文本”组件拖动到页面上,并将其放在“按钮”组件的下方。

  4. 在“服务器”窗口中,展开“Web 服务”>“样例”,如下图所示。

    图 8:选择 WorldTime Web 服务
    图 8:选择 WorldTime Web 服务
     
  5. 将 "WorldTime" 样例 Web 服务拖放到 PortletPage1 上。

    worldTimeClient1 将显示在“概要”窗口中,如下图所示。

    图 9:“概要”窗口中的 worldTimeClient1
    图 9:“概要”窗口中的 worldTimeClient1
     
  6. 测试 WorldTime 样例 Web 服务。在“服务器”窗口中,展开“样例”>“WorldTime Web 服务”节点。将出现方法列表。右键单击第二个 tzStampNow 方法,然后从弹出式菜单中选择“测试方法”,如下图所示。

    图 10:测试 tzStampNow 方法
    图 10:测试 tzStampNow 方法
      将显示“测试 Web 服务方法”对话框。

    tzStampNow 采用类型均为 java.lang.String 的两个参数:tZone(时区)和format(结果的格式规范)。键入 tZone 的值 PSTformat 的值 MM-dd-yyyy HH:mm:ss,如下图所示。

    图 11:tzStampNow 参数值
    图 11:tzStampNow 参数值
     
  7. 单击“提交”按钮。如果测试成功,则 java.lang.String 类型的值将显示在对话框的“结果”部分中。单击“关闭”按钮关闭“测试 Web 服务方法”对话框。

    如果打开一个错误对话框,显示 InvocationTargetException 错误消息,请确保您的 HTTP 代理服务器设置正确无误 [弹出式窗口]
 

创建会话 Bean 属性

 
在常规 Web 应用程序中,使用请求 Bean 在应用程序页之间传递值。由于 Portlet 生命周期的差异 [弹出式窗口],您必须改用会话 Bean。
 
  1. 在“概要”窗口中,右键单击 "SessionBean1" 节点,然后从弹出式菜单中选择“添加”>“属性”。

  2. 在“新建属性模式”对话框中,键入新属性的名称 time,然后单击“确定”。

    新属性 time 将被添加到 SessionBean。

  3. 要将“静态文本”组件绑定到 time 属性,请右键单击“静态文本”组件,然后从弹出式菜单中选择“绑定到数据”。

  4. 在“绑定到数据 - StaticText1”对话框中,单击“绑定到对象”标签。打开“选择绑定目标”窗格。

  5. 选择 "SessionBean1" > "time",如下图所示。

    图 11:将 time 属性绑定到 staticText1
    图 11:将 time 属性绑定到 staticText1
     
  6. 单击“确定”。

    请注意,静态文本组件在可视设计器中发生了改变。

  7. 双击 The time is... 按钮,然后将以下代码(以粗体显示)添加到 timeButton() 方法。插入代码后,可以按 Ctrl-Shift-F 组合键自动重新设置代码格式。

     
    代码样例 1:WorldTime Web 服务 timeButton_action() 方法
     public String timeButton_action() {
           String result = "";
            try {
                result = this.getWorldTimeClient1().tzStampNow("PST",
                "MM-dd-yyyy HH:mm:ss");
            } catch (Exception e) {
                log("Page1 failure with web service", e);
            }
            this.getSessionBean1().setTime(result);
    
            return null;
        }
    
     

  8. 运行并部署 Portlet。单击 The time is... 按钮时,将显示当前的太平洋标准时间,与下图类似。

    图 12:显示当前时间的 Portlet
    图 12:显示当前时间的 Portlet
     

执行其他的 Portlet 操作

 
要了解如何导出 Portlet 应用程序,然后将其部署到 Sun Portal Server 6,请参见部署 Portlet 应用程序
 

小结

 
在本教程中,您学习了如何设计和部署简单的导航 Portlet,如何为编辑模式和帮助模式添加页,如何在用户单击同一页上的按钮时使用 SessionBean 属性在 Portlet 页上设置值,以及如何将 Web 服务添加到 Portlet。
 

另请参见


 
此页的最新修改时间:2006 年 1 月 25 日