很多 Web 站点为串联组织或其它站点的发布提供有用的内容,这其中包括 Builder.com 和 TechRepublic.com。这两个站点最近也都启动了它们自己的RSS(Really Simple Syndication)种子,这样就允许 Web 开发人员将这两个站点的内容加入到他们自己的站点中。
创建 RSS 是一件事;将它交付给每个人使用则是另外一件事。在本文中,我们将分析一个解决方案,这个解决方案能够帮助你将 RSS 种子快速、简单地交付给其它 Web 站点。
如果你已经熟悉了RSS,那么你可以需要跳过这一节。如果还不熟悉 RSS,那么不妨继续读下去,以了解 RSS 到底是什么东西。
简单地说,RSS 是一种用于描述串联内容的 XML 语法。当然,内容是一个很泛且不明确的术语。在这里,我们将内容定义为在一个新闻 Web 站点发表的文章。例如,Builder.com 和 TechRepublic 都是技术内容资源。这两个站点以文章的形式提供内容,而它们提供的文章可以串联或者分布到其它站点上。RSS XML 语法描述文章标题以及说明,并提供如何链接到完整内容的信息。
RSS XML 文档由定义组成。在最顶级是频道(channel)。RSS 种子中的每个内容项或文章属于一个频道。通常,一个 RSS 种子由一个单一的包含所有文章的频道组成。频道包含有以下信息,标题和说明、内容来源的图片,以及一个指向文章来源的链接。列表 A 给出了一个 Builder.com RSS 种子的例子。
有两个组件负责提供 RSS 种子给其它 Web 站点。直接组件负责如何交付内容给最终用户。附加组件负责创建要交付给最终用户的内容。
目标是使用一段简单的 JavaScript 代码直接表现一个有格式的种子给最终用户。例如,在 HTML 页面中,你应该能够以如下方式添加一行代码:
<script
src="http://www.example.com/serveFeed.jsp?hed=2&feed=1"></script>
在这种情况下,脚本指向一个表示 RSS 大标题的 JSP 页面。所以,第一个 Java 组件是实际在用户的页面表现种子的 JavaScript;第二个组件是根据一个 RSS 文档创建 JavaScript 的 JSP 页面。
我们首先分析 JavaScript 的输出。基本上,我们的 JSP 将创建一个与列表 B 非常类似的输出。这段脚本使用 document 对象将 HTML 写到浏览器上。换言之,前面的脚本本质上像一个运行在用户的浏览器上的HTML 客户端包含。当浏览器看到 scriptlet 标记时,它调用 scr 中的URL 然后像 JavaScript 一样运行输出。在这里,JavaScript 是表现为 HTML 的 RSS 大标题。
我们的种子的另一个需求是它是参数驱动的。该页面可以指定三个参数:
表 A:种子参数
|
实际可以对种子应用的参数以及可接受的值
feed 指示器用于指示页面是使用 Builder.com 种子还是使用 TechRepublic.com 种子。
现在我们已经知道我们的 JSP 的输入的样子(一个 RSS 种子),而且还知道了输出的样子(由 JavaScript表现为 HTML 的大标题),所以我们能够创建生长种子的代码了。RSS 解析器组成了页面的核心,你可以从Builder Downloads 提供的 serveFeed.jsp 看到这一点。
如果你浏览代码,你会发现几样东西。首先,我已经在 JSP 页面内定义了一个局部类。这样做的原因有两个。一是我想使用我的程序中的一些结构和模块,可以通过 JSP 页面之外的类实现。所以第二个原因是整个工具应该完完全全地包包装在单个 JSP 页面中。
接下来要注意的就是实际的 JSP 页面代码其实只有几行。基本上,我们实例化了 FeedServer 类,根据输入参数生成了种子,最后输出了结果。