» 搜索提示 
 
生成 GoogleSearch Web 服务 Portlet
2006 年 1 月 [修订号:V2-2]  
本教程介绍了如何使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 开发一个用于获取 GoogleSearch Web 服务的、与 JSR-168 兼容的 JavaServer Faces Portlet 应用程序。该应用程序使用 GoogleSearch Web 服务检查用户在搜索页上输入的单词和短语的拼写。

要生成 GoogleSearch Portlet,请将 GoogleSearch Web 服务添加到应用程序中,然后设计两个页面:键入用户查询的 GoogleSearch 页和结果页。接下来,为会话 Bean 设置一个属性,以设置第二页的显示值。最后,建立这两个页面之间的导航。

GoogleSearch Web 服务不仅支持对 Google 搜索结果的查询,而且它还是与 Java Studio Creator IDE 捆绑在一起的几个样例 Web 服务之一。
 
目录
 
获取 Google 许可证密钥
测试 GoogleSearch Web 服务
创建 GoogleSearch Portlet 项目
设计搜索页
设计结果页
创建会话 Bean 属性
添加搜索代码和导航
执行其他的 Portlet 操作
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 
在学习本教程之前,您需要熟悉应用程序的开发过程、Portlet 和 Web 服务。获取 Web 服务对我们了解如何从常规 Web 应用程序访问 Web 服务提供了很大的帮助。
 
如果您处于防火墙的保护下,则需要配置 IDE 的服务器属性来设置 HTTP 代理服务器
 

获取 Google 许可证密钥

 
要使用 Google Web 服务 API,则必须首先创建一个 Google 帐户并获取许可证密钥。Google 帐户和许可证密钥都是免费获取的。许可证密钥允许您每天最多进行 1,000 次自动查询。在继续学习本教程之前,请转至 http://www.google.com/apis/ 创建一个 Google 帐户并获取许可证密钥。
 

测试 GoogleSearch Web 服务

 
  1. 在“服务器”窗口中,展开“Web 服务”> "Samples" > "GoogleSearch"。

  2. 右键单击 "doSpellingSuggestion" 节点,然后从弹出式菜单中选择“测试方法”。

    将显示“测试 Web 服务方法”对话框。请注意,该方法需要参数 keyphrase

  3. 将 Google 许可证密钥复制并粘贴到 key 参数字段中,在 phrase 字段中键入要检查其拼写的拼写错误的单词或短语,然后单击“提交”。

    结果将显示在该对话框的“结果”部分。请注意,如果输入了拼写正确的单词或短语,或者输入一个随机字符串,则 Google 不返回任何结果。

  4. 单击“关闭”以关闭该对话框。
 

创建 GoogleSearch Portlet 项目

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

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

  3. 将项目命名为 GooglePortlet

  4. 单击“下一步”。将打开“Portlet 部署描述符”窗格。

  5. 单击“完成”以接受缺省值。

    将在可视设计器中打开 GooglePortlet 的初始页 PortletPage1。

  6. 在“服务器”窗口中,选择“Web 服务”> "Samples" > "GoogleSearch",并将 GoogleSearch 放在 PortletPage1 页上。

    此时 googleSearchClient1 将显示在“概要”窗口中。
 

设计搜索页

 
在本部分中,您将设计 GoogleSearch Portlet 应用程序的搜索页。完成后的搜索页与下图类似。
 
图 1:搜索页的设计
图 1:搜索页的设计
 
  1. 将一个“图像”组件从组件面板的“基本”类别拖动到 PortletPage1 上,并将其放在左上角中。

  2. 在“属性”窗口中,将 url 属性设置为 http://www.google.com/images/logo_sm.gif。将显示 Google 标志。

  3. 将一个“文本字段”拖动到页面上,并将其放在 Google 标志下方。在“属性”窗口中,通过单击 required 属性的复选框将该属性设置为 True

  4. 将一个“按钮”组件拖动到页面上,并将其放在“文本字段”组件的右侧,键入 Spell,然后按 Enter 键。在“属性”窗口中,将其 id 属性设置为 spellButton

  5. 将一个“消息组”组件拖动到页面上,并将其放在“文本字段”的下方。
 

设计结果页

 
接下来,将创建 GoogleSearch Portlet 应用程序的结果页。完成后的结果页与下图类似。
 
图 2:结果页的设计
图 2:结果页的设计
 
  1. 在“项目”窗口中,右键单击 "GooglePortlet" >“Web 页”,然后选择“新建”>“Portlet 页”。将打开“新建 Portlet 页”对话框。

  2. 在“文件名”字段中,键入 ResultPage,然后单击“完成”关闭此对话框。将在可视设计器中打开 ResultPage 页。

  3. 将 Google 图像从 PortletPage1 复制并粘贴到 ResultPage 上。

  4. 将一个“静态文本”组件从组件面板的“基本”类别拖动到页面上,然后键入 Spelling suggestion:

  5. 将另一个“静态文本”组件拖动到页面上,并将其放在第一个“静态文本”组件的右侧。

  6. 将一个“按钮”组件拖动到页面上,并将其放在第二个“静态文本”组件下方,键入 Try Again,然后按 Enter 键。在“属性”窗口中,将其 id 属性设置为 restartButton
 

创建会话 Bean 属性

 
尽管开发 Portlet 应用程序与开发常规的 Web 应用程序类似,但也存在一些重要的差别。例如,在常规 Web 应用程序中,使用请求 Bean 在应用程序 Web 页之间传递信息。但是,由于 Portlet 在生命周期上的差异,必须为会话 Bean 创建一个属性,然后使用该属性在 Portlet Web 页之间传递信息。
  1. 在“概要”窗口中,右键单击 SessionBean1,然后选择“添加”>“属性”。

    将打开“新建属性模式”对话框。

  2. 在“新建属性模式”对话框中,键入新属性的名称 result,然后单击“确定”。该属性为缺省的 String 类型。

  3. 右键单击第二个“静态文本”组件,然后从弹出式菜单中选择“绑定到数据”。将打开“绑定到数据 - staticText2”对话框。

  4. 在“绑定到数据 - staticText2”对话框中,单击“绑定到对象”标签。将打开“选择绑定目标”窗格,如下图所示。

    图 3:将 result 属性绑定到 staticText2
    图 3:将 result 属性绑定到 staticText2
     
  5. 选择 "SessionBean1" > "result",然后单击“确定”。

    请注意,“静态文本”组件在可视设计器中发生的变化。
 

添加搜索代码和导航

 
  1. 将 PortletPage1 的 spellButton_action() 方法修改为调用 Google Web 服务,以执行用户查询。通过单击 PortletPage1 标签返回到 PortletPage1 中,然后双击 "Spell" 按钮。IDE 将打开 PortletPage1 的 Java 视图,插入点位于 spellButton_action() 方法中。

  2. spellButton_action() 方法替换为以下粗体显示的代码,并将 your_Google_key 替换为您的 Google API 密钥。插入代码后,可以按 Ctrl-Shift-F 组合键自动重新设置代码格式。

    代码样例 1:GoogleSearch spellButton_action() 方法
     
        public String spellButton_action() throws Exception {
            String result = "";
            String spellword = (String)this.getTextField1().getValue();
            try {
            	result = this.getGoogleSearchClient1().doSpellingSuggestion(
                // Replace with your Google Web APIs license key, in quotes
                    "your_Google_key",
                    spellword);
                } catch (Exception e) {
                    error(e.getMessage());
                	log("Page1 failure with GoogleSearch web service", e);
                	return null;
                }
            if (result=="") {
                this.getSessionBean1().setResult(spellword + " is spelled correctly.");
            } else {
                this.getSessionBean1().setResult(result);
            }
            return "search"; 
        }
    
     

  3. 单击“设计”标签以返回到可视设计器中。

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

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

  5. 单击 PortletPage1.jsp 图标,从 PortletPage1.jsp 上的按钮拖动一条连线到 ResultPage.jsp,键入新连线的名称 search,然后按 Enter 键。

  6. 单击 ResultPage.jsp 图标,从 ResultPage.jsp 上的按钮拖动一条连线到 PortletPage1.jsp,键入新连线的名称 restart,然后按 Enter 键。

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

    Apache Pluto Portlet 容器将在 Web 浏览器的预览窗口中显示该 Portlet。在搜索字段中键入拼写错误的单词,如 Creatar,然后单击 "Spell"。结果页将显示正确的拼写,类似下图。

    图 4:GoogleSearch 拼写结果
    图 4:GoogleSearch 拼写结果
     
 

执行其他的 Portlet 操作

 
要了解如何导出 Portlet 应用程序,然后将其部署到 Sun Portal Server 6,请参见部署 Portlet 应用程序
 
执行与本教程所述内容类似的步骤,在 Portlet 中使用 Google Web 服务搜索结果。
 
另请参见

 

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