`
piziwang
  • 浏览: 240003 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

用JSP实现基于Web的RSS阅读器

    博客分类:
  • J2EE
阅读更多
李力,Sun中国工程院工程师

一: 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 需要两个条件:

  1. Java SE 1.4 以上的版本,下载地址:  http://java.sun.com/

  2. 开源软件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 等各种应用程序的开发。

 

  1. NetBeans 5.0 创建 Web Project

    打开NetBeans,  选择菜单"文件->新建项目",在新建项目窗口中,"类别"选择"Web" ,项目选择"Web 应用程序",点击”下一步”。在”新建Web 应用程序”窗口中,输入项目名称,比如”webrssreader” 和项目位置,其余采用缺省, 点击”完成”。


    图一: 创建NetBeans Web 项目

     

  2. 在新建立的”webrssreader” 项目中,加入两个jar 文件:

    jdom.jar JDOM 开源项目中(http://www.jdom.org/

    rome.jar : ROME 开源项目中(http://wiki.java.net/bin/view/Javawsxml/Rome


    图二:添加库文件

     

  3. 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 全部源代码

     

  1. 运行项目。鼠标右键点击”webrssreader” 项目,选择”运行项目”。


    图三: 运行程序

     

  2. 运行结果如下。


图四: 程序运行结果

四:总结

RSS 属于Web2.0 的一种应用技术。Web2.0 提倡个性化与参与性。而这个简单实例的开发中,采用的都是一些开源软件,开源软件更是”人人为我,我为人人”精神的一种体现。很多时候,我们不需要自己从头开发一些工具,站在前人的肩膀上,开发出一些更好的应用也许是程序员们更应该考虑的事情。

 

作者介绍:

李力目前在 Sun Microsystems 任高级软件工程师,有近十年软件开发经验,曾就职于 AIG CA 等公司,任软件工程师及系统分析员等职位,在 J2EE 领域有丰富的实际开发经验。联系方式: Ada.Li@Sun.com

分享到:
评论

相关推荐

    RSS生成与阅读器制作 jsp 源码

    RSS(Really Simple Syndication)是一种基于XML的网络内容发布协议,它允许网站提供自己的新闻提要,以便用户可以通过RSS阅读器订阅和获取更新。在本项目中,“RSS生成与阅读器制作 jsp 源码”是关于如何使用Java...

    RSS阅读器模块

    在本教程中,我们将深入探讨RSS阅读器模块的设计和实现,特别关注使用Java Server Pages(JSP)进行开发。 首先,我们需要了解JSP的基础知识。JSP是Java平台上的服务器端脚本语言,用于创建动态网页。它结合了HTML...

    使用Spring MVC和JSP构建的全栈RSS阅读器Web应用程序(95分以上课程大作业).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Java+XML写的RSS阅读器

    3. **Java编程**:使用Java编写RSS阅读器,需要熟悉Java的网络编程,以便从服务器拉取RSS feeds。Java的`java.net.URL`类和`java.io.InputStreamReader`可以用来读取远程资源。`javax.xml.parsers....

    JSP实例开发源码——网站RSS订阅功能插件RSSMaker JSP版.zip

    RSS(Really Simple Syndication)是一种网络内容发布格式,它允许用户通过RSS阅读器或聚合器订阅网站的更新内容,如新闻、博客文章等。RSSMaker JSP版是一个基于JSP技术实现的RSS订阅功能插件,它能够帮助开发者...

    RSS DEMO 支持RSS定阅

    在这个项目中,JSP被用来实现RSS阅读器的前端部分,展示订阅的RSS源内容。用户可以通过JSP页面浏览订阅的新闻标题、摘要,并可能点击链接跳转至原始内容。 【导入运行】 在Java开发中,"导入运行"通常指的是将项目...

    [其他类别]网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp(毕设 + 课设).zip

    RSS(Really Simple Syndication)是一种网络内容发布的标准,它允许用户通过RSS阅读器或聚合器订阅网站的更新内容,无需频繁访问网站即可获取最新信息。RSS订阅功能是现代网站增强用户体验、提高信息传播效率的重要...

    JSP读取RSS实例

    **RSS**是一种XML格式的数据,常用于发布新闻、博客更新等信息,使得用户可以通过RSS阅读器订阅并获取最新内容。RSS文件通常包含标题、摘要、链接等元素,便于快速浏览和跟踪信息。 **xml_sina.jsp**:这个文件很...

    JSP源码——网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp.zip

    RSS(Really Simple Syndication)是一种用于发布和聚合Web内容的XML格式,它允许用户通过RSS阅读器或聚合器订阅网站更新,无需频繁访问网站。RSSMaker JSP版 v1.0是一个专门用于为网站添加RSS订阅功能的JSP插件,它...

    [其他类别]网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp.rar

    RSSMaker JSP版 v1.0 是一个专为网站提供RSS订阅功能的插件,它基于JSP(Java Server Pages)技术开发,旨在帮助网站快速实现RSS(Really Simple Syndication) feed的创建和发布,从而方便用户通过RSS阅读器或聚合...

    网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp.rar

    RSS(Really Simple Syndication)是一种网络内容发布协议,它允许用户通过RSS阅读器订阅网站内容,以便及时获取网站的更新信息,无需频繁访问网站。RSS订阅功能在新闻聚合、博客、论坛等信息丰富的网站中应用广泛,...

    基于RSS的动态网站

    RSS是一种XML格式,允许网站发布内容的摘要,便于用户通过RSS阅读器或集成到其他应用程序中进行订阅和获取最新信息,无需频繁访问各个网站。 首先,我们要理解RSS的工作原理。RSS文件包含了一组结构化的数据,如...

    [其他类别]网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp.zip

    【RSS订阅功能插件RSSMaker JSP版 v1.0】是一个专为网站提供RSS订阅服务的Java应用程序,主要用于帮助网站实现RSS(Really Simple Syndication)功能,使得用户可以通过RSS阅读器或者聚合器方便地获取并跟踪网站的...

    JSP源码 网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp.rar

    【JSP源码 网站RSS订阅功能插件RSSMaker JSP版 v1.0_rssmaker_jsp.rar】是一款专为JSP网站设计的RSS订阅功能插件,它可以帮助开发者快速集成RSS订阅服务,使得网站内容可以方便地被RSS阅读器或其他支持RSS的应用程序...

    jsp源码其他类别网站RSS订阅功能插件RSSMakerJSP版v1.0-rssmaker-jsp

    一旦XML文件生成完成,就需要将其放置在Web服务器上供RSS阅读器访问。RSSMaker JSP版插件会帮助管理这一过程,包括文件的位置设置、权限管理等。 ### 知识点五:部署与使用指南 #### 准备工作 - 确保服务器环境已...

    网站RSS订阅功能插件RSSMaker JSP版 v1.0-rssmaker-jsp.zip

    RSS(Really Simple Syndication)是一种内容聚合格式,允许用户通过RSS阅读器或新闻聚合器获取网站的更新内容,而无需直接访问网站。RSSMaker JSP版则是专门为Java Servlet和JSP环境设计的工具,旨在帮助开发者轻松...

    JSP-RSS订阅,网站插件订阅,源码.zip

    RSS订阅允许用户通过RSS阅读器或浏览器插件获取他们感兴趣的网站的最新信息,而无需频繁访问这些网站。RSS订阅者只需要关注RSS feed,系统会自动抓取并推送新内容。在这个项目中,JSP可能被用来生成和解析RSS feed,...

Global site tag (gtag.js) - Google Analytics