- 浏览: 240003 次
- 性别:
- 来自: 南京
最新评论
-
gonglil:
貌似不行呢?
java 字符串和二进制相互转换 -
robingdo:
这样关闭proxool连接池以后,项目没报那个错,但是数据库用 ...
Proxool连接池在reload web容器时出现HouseKeeper的空指针异常 -
xb12369:
ezfantasy 写道lord_is_layuping 写道 ...
Java忽略大小写替换和提取字符信息 -
ezfantasy:
lord_is_layuping 写道不区分大小写应该是(?i ...
Java忽略大小写替换和提取字符信息 -
狂盗一枝梅:
hex2byte函数功能是转换成十六进制吧?上面写的是转换成二 ...
java 转换图片为字符串,将字符串转换成图片显示
一: 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> |
-
运行项目。鼠标右键点击”webrssreader” 项目,选择”运行项目”。
图三: 运行程序 -
运行结果如下。
表六: index.jsp 全部源代码
图四:
程序运行结果
四:总结
RSS 属于Web2.0 的一种应用技术。Web2.0 提倡个性化与参与性。而这个简单实例的开发中,采用的都是一些开源软件,开源软件更是”人人为我,我为人人”精神的一种体现。很多时候,我们不需要自己从头开发一些工具,站在前人的肩膀上,开发出一些更好的应用也许是程序员们更应该考虑的事情。
作者介绍:
李力目前在 Sun Microsystems 任高级软件工程师,有近十年软件开发经验,曾就职于 AIG , CA 等公司,任软件工程师及系统分析员等职位,在 J2EE 领域有丰富的实际开发经验。联系方式: Ada.Li@Sun.com 。
发表评论
-
InnoDB 启动选项
2011-08-03 12:31 1063InnoDB 启动选项 为了 ... -
关于改变innodb_log_file_size后无法启动mysql的问题
2011-08-03 12:29 2275最近在看MYSQL优化的参数,改了innodb_log_fil ... -
larbin中URL的去重-Bloom Filter算法
2010-08-18 17:47 1977读larbin的源码曾经赞叹 ... -
从 Java 档案 (JAR) 中读取文件
2010-08-12 16:01 2051Java 档案 (Java Archive, JA ... -
Nginx+tomcat 配置
2010-08-04 15:36 5019本文原址连接:http://bbs.yahunet.com/t ... -
linux cronb定时执行java程序
2010-08-02 18:02 1788环境: RedHat Linux JDK5.0 ... -
用HttpClient来模拟浏览器GET POST
2010-05-26 17:42 988一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
JDK API SUN官方下载地址
2010-04-01 11:19 2180http://download.java.net/jdk/jd ... -
Eclipse生成JavaDoc 文件编码解决
2010-02-27 17:04 2140Eclipse导出JavaDoc出现中文乱码解决方法: ... -
Proxool.xml配置文件详细配置说明
2010-02-04 17:58 1795fatal-sql-exception: 它是一 ... -
Java汉语转拼音
2010-01-29 13:59 1436pinyin4j 是Java汉语转拼音 开源框架: h ... -
64位Linux服务器上安装Tomcat
2010-01-21 16:43 3171tomcat 是32位的,安装后在64位环境中不能添加为系统服 ... -
解决web应用用户退出系统后浏览器后退问题
2010-01-13 22:20 46541. 解决用户退出系统后 ... -
response防止页面缓存和重设响应头部
2010-01-13 21:41 1503// 防止缓存 //Forces cache ... -
单元测试使用proxool连接池
2009-12-22 20:29 1479因为proxool连接池一般都是通过tomat web.xml ... -
response防止缓存和重设响应头部
2009-11-30 21:25 32// 防止缓存 response.setHeade ... -
一个奇怪的单例模式
2009-11-15 20:37 967public class Singleton { ... -
MyEclipse下开发邮件发送功能测试失败的原因及处理
2009-11-11 09:09 17341. Exception in thread "ma ... -
java 转换图片为字符串,将字符串转换成图片显示
2009-10-09 20:13 15353java 转换图片为字符串,将字符串转换成图片显示, ... -
java 字符串和二进制相互转换
2009-10-09 19:42 19872二进制转换成字符串: // 二进制转字符串 pub ...
相关推荐
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,...