首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

流线化 Web 应用程序开发(2)

流线化 Web 应用程序开发(2)

基于强制映射的 Web 服务 mashup 示例图 1 展示了一个 JSF mashup — 我将它称为 places 应用程序 — 它使用 Yahoo! Web 服务将地址转换为地图,并显示缩放级别和天气预报:
图 1. 从 Yahoo! Web Services 中查看地图和天气信息要创建一个地点,需要填写地址表单,激活 Go 按钮,然后应用程序将把地址发送给两个 Web 服务:Yahoo! Maps 和 Yahoo! Weather。
Map 服务在 Yahoo! 服务器上返回指向地址映射的 11 个地图 URL,使用不同的缩放级别。Weather 服务返回一些预先组装的 HTML。图像 URL 和 HTML 内容都轻松地显示在一个 JSF 视图中,这要分别感谢 <h:graphicImage> 和 <hutputText>。
places 应用程序使您能够输入任意数量的地址。您甚至可以多次使用同一个地址 ,如图 2 所示,它实际上演示了缩放级别:
图 2. 缩放级别应用程序的关键点places 应用程序有 4 个托管 bean(managed bean),如 表 1 所示:
表 1. places 应用程序中的托管 bean托管 bean 名称类范围mapServicecom.clarity.MapService应用程序weatherServicecom.clarity.WeatherService应用程序placescom.clarity.Places会话placecom.clarity.Place 请求
运行 places 应用程序要运行 places 应用程序,需要访问 ,从 Yahoo! 获得一个应用程序 ID,这样才能使用 Yahoo! Web 服务。单击 Yahoo! Maps Web Service 中的 Get an App ID 按钮。得到 ID 后,在 MapService.java 和 WeatherService.java 中用您的 ID 替换 YOUR_ID_HERE。

应用程序在会话范围内存储了一组 Place,如  所示,并在请求范围内维护了一个 Place。应用程序还分别使用应用程序范围内的 mapService 和 weatherService 托管 beans 为 Yahoo! 的 map 和 weather Web 服务提供了简单的 API。
创建地点非常简单。清单 1 显示了  中的视图所含的地址表单的代码:
清单 1. 地址表单
1
2
3
4
5
6
7
8
9
10
11
12
13
<h:form>
  <h:panelGrid columns="2">
    #{msgs.streetAddress} <h:inputText value="#{place.streetAddress}" size="15"/>
    #{msgs.city}          <h:inputText value="#{place.city}"          size="10"/>
    #{msgs.state}         <h:inputText value="#{place.state}"         size="2"/>
    #{msgs.zip}           <h:inputText value="#{place.zip}"           size="5"/>

    <h:commandButton value="#{msgs.goButtonText}"
        style="font-familyalatino;font-style:italic"
        action="#{place.fetch}"/>

  </h:panelGrid>
</h:form>

返回列表