一: RSS介绍
根据维基百科(http://zh.wikipedia.org/wiki/RSS)的定义,“RSS是一种用于共享新闻和其他Web内容的数据交换规范 ”,它是一系列的规范的组合,采用XML格式。目前国内RSS应用最多的是在新闻网站和博客网站上。
许多网站可以用RSS阅读器来个性化自己的网页,比如显示最新的新浪新闻,显示自己好朋友最新的博客文章,显示最新的Google论坛内容。除此之外,利用RSS阅读器还可以实现其它用途,比如:
-
获得天气预报
-
接收邮件,比如Gmail就提供RSS feed
-
获取最新股票行情
-
获取音乐,电台节目和视频剪辑等等
二:Rome介绍
这篇文章采用Rome这个开源工具来实现RSS阅读器。Rome支持的格式很多,有RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland, RSS 0.92, RSS 0.93, RSS 0.94, RSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0 等等,几乎囊括了目前所有的RSS 和atom版本。最新的Rome版本可以从http://wiki.java.net/bin/view/Javawsxml/Rome上得到。
实现RSS阅读器,主要采用Rome的解析功能,就是从XML文件中读出相应的内容。我用一些简单代码来说明如何使用Rome中的类和方法。
URL feedUrl = new URL("http://rss.sina.com.cn/news/marquee/ddt.xml");
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
|
表一: 得到RSS Feed
“http://rss.sina.com.cn/news/marquee/ddt.xml“是新浪新闻的一个RSS 地址。通过三行代码,就可以得到一个对应这个地址的RSS Feed对象。这个对象包含我们所需要的所有RSS内容。如果用System.out.println(feed),会得到表二中的结果。从中可以清楚地看到 SyndFeed类的结构。
SyndFeedImpl.contributors=null
SyndFeedImpl.title=新闻中心-新闻要闻
SyndFeedImpl.categories[0].name=
SyndFeedImpl.categories[0].taxonomyUri=null
SyndFeedImpl.link=http://news.sina.com.cn/iframe/o/allnews/input/index.htm
SyndFeedImpl.publishedDate=Thu Jun 22 13:20:01 CST 2006
SyndFeedImpl.entries[0].updatedDate=null
SyndFeedImpl.entries[0].contributors=null
SyndFeedImpl.entries[0].title=扎瓦赫里在录像带中呼吁阿富汗人抵抗外国侵略
SyndFeedImpl.entries[0].categories[0].name=
SyndFeedImpl.entries[0].categories[0].taxonomyUri=null
SyndFeedImpl.entries[0].link=http://news.sina.com.cn/w/2006-06-22/11569270955s.shtml
SyndFeedImpl.entries[0].publishedDate=Thu Jun 22 11:56:00 CST 2006
SyndFeedImpl.entries[0].authors=null
SyndFeedImpl.entries[0].modules[0].descriptions=[]
SyndFeedImpl.entries[0].modules[0].creators[0]=WWW.SINA.COM.CN
SyndFeedImpl.entries[0].modules[0].contributors=[]
......
SyndFeedImpl.author=null
SyndFeedImpl.copyright=Copyright 1996 - 2005 SINA Inc. All Rights Reserved
|
表二: SyndFeed数据结构
从上述输出结果可以看出,每个新闻条目是由entry代表的。下列代码从feed中得到entry
List list = feed.getEntries();
for (int i=0; i< list.size(); i++) {
SyndEntry entry = (SyndEntry)list.get(i);
}
|
表三:从SyndFeed中得到SyndEntry
如果程序位于防火墙后面,就需要在程序中加上一些Proxy设置。例如采用下面的http proxy:
Properties systemSettings = System.getProperties();
systemSettings.put("http.proxyHost", "myproxyserver.com");
systemSettings.put("http.proxyPort", "80");
System.setProperties(systemSettings);
|
表四:Proxy设置
有时候,可能会遇到“java.io.IOException: Server returned HTTP response code: 403 for URL”的错误信息。通常是因为服务器的安全设置不接受Java程序作为客户端访问,解决方案是设置客户端的User Agent, 示例代码如下:
URLConnection feedUrl = new jURL(urlStr).openConnection();
feedUrl.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
|
表五:设置User-Agent
ROME 提供的功能很多,除了可以解析Feed 外,还可以生成Feed。用Rome来为自己的网站内容创建RSS Feed,这样别人就可以通过RSS 阅读器来随时了解你网站内容的更新了。
使用ROME需要两个条件:
-
Java SE 1.4以上的版本,下载地址: http://java.sun.com/
-
开源软件JDOM,下载地址:http://www.jdom.org/
三:用NetBeans快速开发一个简单实例
下面用一个简单的实例原型开发步骤来显示如何快速地利用Rome和NetBeans来构建一个基于Web的RSS阅读器。
NetBeans是一个开源的Java IDE软件,下载地址:http://www.netbeans.org。选用NetBeans是因为它内置Tomcat,可以节省很多配置和运行的时间。而且功能强大,可以高效完成Java SE, Java EE 以及Java ME等各种应用程序的开发。
-
用NetBeans 5.0 创建 Web Project。
打开NetBeans, 选择菜单"文件->新建项目",在新建项目窗口中,"类别"选择"Web",项目选择"Web应用程序",点击”下一步”。在”新建Web应用程序”窗口中,输入项目名称,比如”webrssreader”和项目位置,其余采用缺省,点击”完成”。
图一: 创建NetBeans的Web项目
-
在新建立的”webrssreader”项目中,加入两个jar文件:
jdom.jar:JDOM开源项目中(http://www.jdom.org/)
rome.jar : ROME开源项目中(http://wiki.java.net/bin/view/Javawsxml/Rome)
图二:添加库文件
-
在index.jsp中加入代码
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sina News</title>
</head>
<body>
<%
java.util.Properties systemSettings = System.getProperties();
systemSettings.put("http.proxyHost", "mywebcache.com");
systemSettings.put("http.proxyPort", "8080");
System.setProperties(systemSettings);
String urlStr = "http://rss.sina.com.cn/news/marquee/ddt.xml";
java.net.URLConnection feedUrl = new java.net.URL(urlStr).openConnection();
feedUrl.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
com.sun.syndication.io.SyndFeedInput input = new com.sun.syndication.io.SyndFeedInput();
com.sun.syndication.feed.synd.SyndFeed feed = input.build(new com.sun.syndication.io.XmlReader(feedUrl));
%>
<div align="center">
<h1><%=feed.getTitle()%></h1>
<table border=1 cellpadding=3 width="700">
<tr>
<th>Number</th>
<th>Title</th>
<th>Time</th>
</tr>
<%
java.util.List list = feed.getEntries();
for (int i=0; i< list.size(); i++) {
com.sun.syndication.feed.synd.SyndEntry entry = (com.sun.syndication.feed.synd.SyndEntry)list.get(i);
%>
<tr>
<td><%=i+1%></td>
<td><a href="<%=entry.getLink()%>"><%=entry.getTitle()%></a></td>
<td><%=entry.getPublishedDate()%></td>
</tr>
<%}%>
</table>
</div>
<br>
</body>
</html>
|
表六: index.jsp全部源代码
-
运行项目。鼠标右键点击”webrssreader”项目,选择”运行项目”。
图三: 运行程序
-
运行结果如下。
图四:程序运行结果
四:总结
RSS属于Web2.0的一种应用技术。Web2.0提倡个性化与参与性。而这个简单实例的开发中,采用的都是一些开源软件,开源软件更是”人人为我,我为人人”精神的一种体现。很多时候,我们不需要自己从头开发一些工具,站在前人的肩膀上,开发出一些更好的应用也许是程序员们更应该考虑的事情。
作者介绍:
李力目前在Sun Microsystems任高级软件工程师,有近十年软件开发经验,曾就职于AIG,CA等公司,任软件工程师及系统分析员等职位,在J2EE领域有丰富的实际开发经验。联系方式:Ada.Li@Sun.com。
分享到:
相关推荐
RSS(Really Simple Syndication)是一种基于XML的网络内容发布协议,它允许网站提供自己的新闻提要,以便用户可以通过RSS阅读器订阅和获取更新。在本项目中,“RSS生成与阅读器制作 jsp 源码”是关于如何使用Java...
在本教程中,我们将深入探讨RSS阅读器模块的设计和实现,特别关注使用Java Server Pages(JSP)进行开发。 首先,我们需要了解JSP的基础知识。JSP是Java平台上的服务器端脚本语言,用于创建动态网页。它结合了HTML...
Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...
3. **Java编程**:使用Java编写RSS阅读器,需要熟悉Java的网络编程,以便从服务器拉取RSS feeds。Java的`java.net.URL`类和`java.io.InputStreamReader`可以用来读取远程资源。`javax.xml.parsers....
RSS(Really Simple Syndication)是一种网络内容发布格式,它允许用户通过RSS阅读器或聚合器订阅网站的更新内容,如新闻、博客文章等。RSSMaker JSP版是一个基于JSP技术实现的RSS订阅功能插件,它能够帮助开发者...
在这个项目中,JSP被用来实现RSS阅读器的前端部分,展示订阅的RSS源内容。用户可以通过JSP页面浏览订阅的新闻标题、摘要,并可能点击链接跳转至原始内容。 【导入运行】 在Java开发中,"导入运行"通常指的是将项目...
RSS(Really Simple Syndication)是一种网络内容发布的标准,它允许用户通过RSS阅读器或聚合器订阅网站的更新内容,无需频繁访问网站即可获取最新信息。RSS订阅功能是现代网站增强用户体验、提高信息传播效率的重要...
**RSS**是一种XML格式的数据,常用于发布新闻、博客更新等信息,使得用户可以通过RSS阅读器订阅并获取最新内容。RSS文件通常包含标题、摘要、链接等元素,便于快速浏览和跟踪信息。 **xml_sina.jsp**:这个文件很...
RSS(Really Simple Syndication)是一种用于发布和聚合Web内容的XML格式,它允许用户通过RSS阅读器或聚合器订阅网站更新,无需频繁访问网站。RSSMaker JSP版 v1.0是一个专门用于为网站添加RSS订阅功能的JSP插件,它...
RSSMaker JSP版 v1.0 是一个专为网站提供RSS订阅功能的插件,它基于JSP(Java Server Pages)技术开发,旨在帮助网站快速实现RSS(Really Simple Syndication) feed的创建和发布,从而方便用户通过RSS阅读器或聚合...
RSS(Really Simple Syndication)是一种网络内容发布协议,它允许用户通过RSS阅读器订阅网站内容,以便及时获取网站的更新信息,无需频繁访问网站。RSS订阅功能在新闻聚合、博客、论坛等信息丰富的网站中应用广泛,...
RSS是一种XML格式,允许网站发布内容的摘要,便于用户通过RSS阅读器或集成到其他应用程序中进行订阅和获取最新信息,无需频繁访问各个网站。 首先,我们要理解RSS的工作原理。RSS文件包含了一组结构化的数据,如...
【RSS订阅功能插件RSSMaker JSP版 v1.0】是一个专为网站提供RSS订阅服务的Java应用程序,主要用于帮助网站实现RSS(Really Simple Syndication)功能,使得用户可以通过RSS阅读器或者聚合器方便地获取并跟踪网站的...
【JSP源码 网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp.rar】是一款专为JSP网站设计的RSS订阅功能插件,它可以帮助开发者快速集成RSS订阅服务,使得网站内容可以方便地被RSS阅读器或其他支持RSS的应用程序...
一旦XML文件生成完成,就需要将其放置在Web服务器上供RSS阅读器访问。RSSMaker JSP版插件会帮助管理这一过程,包括文件的位置设置、权限管理等。 ### 知识点五:部署与使用指南 #### 准备工作 - 确保服务器环境已...
RSS(Really Simple Syndication)是一种内容聚合格式,允许用户通过RSS阅读器或新闻聚合器获取网站的更新内容,而无需直接访问网站。RSSMaker JSP版则是专门为Java Servlet和JSP环境设计的工具,旨在帮助开发者轻松...
RSS订阅允许用户通过RSS阅读器或浏览器插件获取他们感兴趣的网站的最新信息,而无需频繁访问这些网站。RSS订阅者只需要关注RSS feed,系统会自动抓取并推送新内容。在这个项目中,JSP可能被用来生成和解析RSS feed,...