博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 Mashups4JSF 生成和消费 Mashup Feed
阅读量:6447 次
发布时间:2019-06-23

本文共 7582 字,大约阅读时间需要 25 分钟。

在早先的一篇关于 Mashups4JSF 的文章中(参见 ),我们了解了 Mashups4JSF 是什么,如何配置它,以及如何使用它构建一个有用的 mashup 应用程序。我们还了解了如何在 WebSphere Application Server V7.0 上结合使用库和 Apache MyFaces 2.0 以及 IBM JWL (JavaServer Faces Widget Library)。

mashup 应用程序中最常见的用例之一就是以 feed(RSS 或 Atom)的形式导出应用程序的内部数据。在 Mashups4JSF 出现之前,开发人员需要从应用程序 DTO(数据传输对象)中手动生成 feed。现在要感谢 Mashups4JSF,它使得以 feed 形式导出应用程序数据变得更简单。

在本文中,我将解释如何使用 Mashups4JSF feed 生成器服务 (producer service) 以 RSS feed 的形式导出 Web 应用程序数据,以及如何通过 feed 阅读器组件使用这些数据。

浏览新闻应用程序

新闻应用程序是一个 JavaServer Faces (JSF) 2.0 应用程序,它在数据表中展示一个样例新闻集,如  所示,我们希望以 RSS feed 的方式导出这个样例新闻集。

图 1. 新闻样例
新闻应用程序的屏幕截图,包含链接的柱形列表以及它们的标题、作者、类别和描述。 

新闻页面的代码非常简单。 展示了 news.xhtml 页面中的新闻 dataTable 的 XHTML 代码。

清单 1. news.xhtml 页面中的新闻 dataTable 

 

newsTable 通过表达式 #{newsList.news} 与 NewsList DTO 绑定。 展示了 NewsList DTO 的代码。它包含新闻对象的静态列表。它可以保存来自数据库的真实数据,但是为了简便起见,这里使用了一个静态列表。

清单 2. NewsList DTO

@ManagedBeanpublic class NewsList {    static List 
news = new ArrayList
(); // Sample news list static { for (int i = 0; i < 10; ++i) { news.add(new News( "Title" + i, "Description" + i, "http://www.google.com/search?q=" + i, "Category" + i, "Author" + i)); } } public List
getNews() { return news; }}

 

News 类是一个非常简单的 bean。它仅包含以下属性:

  1. Title
  2. Description
  3. Link
  4. Category
  5. Author

参见 。

清单 3. News DTO

public class News {    private String title;    private String desc;    private String link;    private String category;    private String author;        ...    public String getTitle() {		return title;    }    public void setTitle(String title) {		this.title = title;    }	    public String getDesc() {		return desc;    }    public void setDesc(String desc) {		this.desc = desc;    }	    public String getLink() {		return link;    }    public void setLink(String link) {		this.link = link;    }	    public String getCategory() {		return category;    }    public void setCategory(String category) {		this.category = category;    }	    public String getAuthor() {		return author;    }	    public void setAuthor(String author) {		this.author = author;    }}

 

现在,让我们看看如何以 RSS feed 的形式导出 NewsList 数据。

 

以 RSS feed 的形式导出应用程序数据

在详细介绍以 RSS feed 的形式导出新闻列表之前,您可能需要了解如何为 JSP 2.0 应用程序配置 Mashups4JSF 库,此前的一篇 Mashups4JSF 文章(参见 )介绍了这方面的内容。在使用 Mashups4JSF feed servlet 时,确保下载了 Mashups4JSF 0.0.3 的最新的稳定快照(参见 )。

要使用 Mashups4JSF 以 RSS feed 的形式导出 NewsList 数据,我们需要在 JSF 应用程序中执行下列步骤。

注册 Mashups4JSF feed servlet

在您的应用程序的 web.xml 中注册 Mashups4JSF 的 MashupFeedServlet,如  所示。

清单 4. 注册 Mashups4JSF feed servlet

mashupFeedServlet
com.googlecode.mashups.servlets.MashupFeedServlet
mashupFeedServlet
/mashupFeedServlet

 

注释 feed 类

使用 @Feed 注释 feed 类(NewsList 类),并分别使用 @FeedTitle@FeedDescription@FeedLink 和 @FeedItems 指定标题、描述、链接和 feed 项。 显示了应用注释后的 NewsList 类。

清单 5. 应用注释后的 NewsList 类

@ManagedBean@Feedpublic class NewsList {     static List 
news = new ArrayList
(); // Sample news list static { for (int i = 0; i < 10; ++i) { news.add(new News( "Title" + i, "Description" + i, "http://www.google.com/search?q=" + i, "Category" + i, "Author" + i)); } } @FeedItems public List
getNews() { return news; } @FeedTitle public String getTitle() { return TITLE; } @FeedDescription public String getDescription() { return DESCRIPTION; } @FeedLink public String getLink() { return LINK; } private final String TITLE = "News List"; private final String DESCRIPTION = "News List Description"; private final String LINK = "http://somenewschannel.com"; }

 

使用 @ItemFeed 注释 feed 项类(News 类),并分别使用 @ItemTitle@ItemDescription@ItemLink@ItemCategory 和@ItemAuthor 指定 feed 项的标题、描述、链接、类别和作者。  显示了应用注释后的 News 类。

清单 6. 应用注释后的 News 类

@FeedItempublic class News {    private String title;    private String desc;    private String link;    private String category;    private String author;        ...        @ItemTitle    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }        @ItemDescription    public String getDesc() {        return desc;    }    public void setDesc(String desc) {        this.desc = desc;    }        @ItemLink    public String getLink() {        return link;    }    public void setLink(String link) {        this.link = link;    }        @ItemCategory    public String getCategory() {        return category;    }    public void setCategory(String category) {        this.category = category;    }        @ItemAuthor    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }}

 

呈现 feed

对 feed 和 feed 项类进行注释后,基本上已经完成了全部工作。接下来要做的就是呈现 feed,实现方式是将 feed 解析为 feed servlet 的参数,并指定 rss 作为输出,如  所示。

清单 7. 通过将 feed 类解析为 feed servlet 的参数呈现 RSS feed 

#{request.contextPath}/mashupFeedServlet?feedClass=dto.NewsList&output=rss

 

图 2 展示了以 RSS feed 的形式导出的 NewsList feed。

图 2. NewsList RSS feed 
RSS feed 的屏幕截图,可以在浏览器中查看新闻。 

如果希望以 ATOM feed 的形式导出 NewsList,那么需要将 atom 指定为 feed servlet 的输出。

 

通过 feed 阅读器使用 RSS feed

除了 RSS 和 ATOM feed 导出外,Mashups4JSF 还允许在 JSF 应用程序内部使用任何 RSS、ATOM 或 JSON feed。因此,让我们来看看如何通过 rssFeedReader 组件使用我们刚刚为 NewsList 数据创建的 RSS feed。

 展示了如何在 consumer.xhtml 页面中通过 rssFeedReader 组件使用 RSS feed。

清单 8. consumer.xhtml 页面中的 rssFeedReader 组件

#{messages.application_channel_desc}#{channel.description}

#{messages.application_item_index} #{itemIndex}
#{messages.application_item_title} #{item.title}
#{messages.application_item_link}
#{item.link}
#{messages.application_item_author} #{item.author}
#{messages.application_item_category} #{item.categories[0].name}

 

如清单 8 所示,我们指定了以下内容:

  • RSS feed URL,
  • 用于访问 RSS 通道信息的 channel 变量(例如,description),
  • item 变量,将访问所有 RSS feed 项(如 titlelink 和 author),以及
  • 项索引。

在 channel 部分中,我们可以指定希望为 RSS 通道显示的属性,而在 item 部分中,我们可以指定希望为每个 feed 项显示的属性。

 展示了 NewsList feed 的 rssFeedReader 输出。

图 3. NewsList RSS feed 的 rssFeedReader 输出
RSS feed 输出的屏幕截图,包括每个条目的项索引、标题、项链接、作者和类别 

结束语

除了各种 mashup 组件和服务之外,Mashups4JSF 还抽象化了为 JSF 应用程序导出和导入 mashup feed 的方式。在 Mashups4JSF 出现之前,开发人员需要从应用程序 DTO(数据传输对象)中手动生成 feed。现在要感谢 Mashups4JSF,它使得以 feed 的形式导出应用程序数据变得更简单。在本文中,我们学习了如何使用 Mashups4JSF Feed Servlet 以 RSS feed 的形式表示 JSF 应用程序数据。我们还了解了如何通过 rssFeedReader 组件使用这些 feed。

 

参考资料

学习

    • (Hazem Saleh,developerWorks,2010 年 7 月):了解 Mashups4JSF 架构和库配置。在 WebSphere Application Server 7.0 上使用 Mashups4JSF 和 IBM JWL (JSF Widget Library) 创建具有少量代码的 mashup 应用程序。
    • :了解有关 Apache Software Foundation 这一项目的更多信息。
    • :访问 Mashups4JSF 库,它允许在 Java™ 和 JSF 应用程序中轻松地构建 mashup。
    • :观看 Mashups4JSF 演示。
    • :了解即将到来的、面向 IBM 开源开发人员的会议、展览和网络广播。 
    • 随时关注 developerWorks 和。 
    • 访问 developerWorks 获得丰富的 how-to 信息、工具和项目更新以及,帮助您用开放源码技术进行开发,并将它们与 IBM 产品结合使用。

转载地址:http://toowo.baihongyu.com/

你可能感兴趣的文章
linux环境通过ssh连接控制台显示中文乱码问题
查看>>
列表增删改查
查看>>
JAVA语言基础-面向对象(代码块)
查看>>
前端加密JS库--CryptoJS 使用指南
查看>>
闪屏页设置
查看>>
12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间
查看>>
hibernate多表联合查询接收返回结果集
查看>>
一个程序猿如何自学双截棍,避免各种编程职业病的发生?
查看>>
Mybatis常见面试题
查看>>
Postman接口测试神器从安装到精通
查看>>
第八届华南会领导层召开集思会
查看>>
fabric-explorer 关于切换到TLS模式的升级
查看>>
MYSQL主从介绍
查看>>
K8s权威指南学习
查看>>
Django自定义过滤器定义与用法示例
查看>>
《人是如何学习的》的读后感范文4000字
查看>>
线程安全性的文档化(70)
查看>>
日常运维(Ⅱ)——firewalld、iptables
查看>>
lvm
查看>>
iptables规则备份和恢复、firewalld的9个zone以及操作和service的操作
查看>>