国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
用JSP實(shí)現(xiàn)基于Web的RSS閱讀器

一: RSS介紹

   根據(jù)維基百科(http://zh.wikipedia.org/wiki/RSS)的定義,“RSS是一種用于共享新聞和其他Web內(nèi)容的數(shù)據(jù)交換規(guī)范 ”,它是一系列的規(guī)范的組合,采用XML格式。目前國(guó)內(nèi)RSS應(yīng)用最多的是在新聞網(wǎng)站和博客網(wǎng)站上。

   許多網(wǎng)站可以用RSS閱讀器來(lái)個(gè)性化自己的網(wǎng)頁(yè),比如顯示最新的新浪新聞,顯示自己好朋友最新的博客文章,顯示最新的Google論壇內(nèi)容。除此之外,利用RSS閱讀器還可以實(shí)現(xiàn)其它用途,比如:

  • 獲得天氣預(yù)報(bào)

  • 接收郵件,比如Gmail就提供RSS feed

  • 獲取最新股票行情

  • 獲取音樂(lè),電臺(tái)節(jié)目和視頻剪輯等等

     

二:Rome介紹

   這篇文章采用Rome這個(gè)開(kāi)源工具來(lái)實(shí)現(xiàn)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上得到。


   實(shí)現(xiàn)RSS閱讀器,主要采用Rome的解析功能,就是從XML文件中讀出相應(yīng)的內(nèi)容。我用一些簡(jiǎn)單代碼來(lái)說(shuō)明如何使用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“是新浪新聞的一個(gè)RSS 地址。通過(guò)三行代碼,就可以得到一個(gè)對(duì)應(yīng)這個(gè)地址的RSS Feed對(duì)象。這個(gè)對(duì)象包含我們所需要的所有RSS內(nèi)容。如果用System.out.println(feed),會(huì)得到表二中的結(jié)果。從中可以清楚地看到 SyndFeed類的結(jié)構(gòu)。


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=扎瓦赫里在錄像帶中呼吁阿富汗人抵抗外國(guó)侵略

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數(shù)據(jù)結(jié)構(gòu)


從上述輸出結(jié)果可以看出,每個(gè)新聞條目是由entry代表的。下列代碼從feed中得到entry

List list = feed.getEntries();

for (int i=0; i< list.size(); i++) {

SyndEntry entry = (SyndEntry)list.get(i);

}

表三:從SyndFeed中得到SyndEntry


如果程序位于防火墻后面,就需要在程序中加上一些Proxy設(shè)置。例如采用下面的http proxy

Properties systemSettings = System.getProperties();

systemSettings.put("http.proxyHost", "myproxyserver.com");

systemSettings.put("http.proxyPort", "80");

System.setProperties(systemSettings);

表四:Proxy設(shè)置

   有時(shí)候,可能會(huì)遇到“java.io.IOException: Server returned HTTP response code: 403 for URL”的錯(cuò)誤信息。通常是因?yàn)榉?wù)器的安全設(shè)置不接受Java程序作為客戶端訪問(wèn),解決方案是設(shè)置客戶端的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));

表五:設(shè)置User-Agent


   ROME 提供的功能很多,除了可以解析Feed 外,還可以生成Feed。用Rome來(lái)為自己的網(wǎng)站內(nèi)容創(chuàng)建RSS Feed,這樣別人就可以通過(guò)RSS 閱讀器來(lái)隨時(shí)了解你網(wǎng)站內(nèi)容的更新了。


使用ROME需要兩個(gè)條件:

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

  2. 開(kāi)源軟件JDOM,下載地址:http://www.jdom.org/

 

三:用NetBeans快速開(kāi)發(fā)一個(gè)簡(jiǎn)單實(shí)例

下面用一個(gè)簡(jiǎn)單的實(shí)例原型開(kāi)發(fā)步驟來(lái)顯示如何快速地利用RomeNetBeans來(lái)構(gòu)建一個(gè)基于WebRSS閱讀器。


NetBeans是一個(gè)開(kāi)源的Java IDE軟件,下載地址:http://www.netbeans.org。選用NetBeans是因?yàn)樗鼉?nèi)置Tomcat,可以節(jié)省很多配置和運(yùn)行的時(shí)間。而且功能強(qiáng)大,可以高效完成Java SE, Java EE 以及Java ME等各種應(yīng)用程序的開(kāi)發(fā)。


  1. NetBeans 5.0 創(chuàng)建 Web Project。

    打開(kāi)NetBeans, 選擇菜單"文件->新建項(xiàng)目",在新建項(xiàng)目窗口中,"類別"選擇"Web",項(xiàng)目選擇"Web應(yīng)用程序",點(diǎn)擊”下一步”。在”新建Web應(yīng)用程序”窗口中,輸入項(xiàng)目名稱,比如”webrssreader”和項(xiàng)目位置,其余采用缺省,點(diǎn)擊”完成”。


    圖一: 創(chuàng)建NetBeansWeb項(xiàng)目

     

  2. 在新建立的”webrssreader”項(xiàng)目中,加入兩個(gè)jar文件:

    jdom.jarJDOM開(kāi)源項(xiàng)目中(http://www.jdom.org/

    rome.jar : ROME開(kāi)源項(xiàng)目中(http://wiki.java.net/bin/view/Javawsxml/Rome


    圖二:添加庫(kù)文件

     

  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. 運(yùn)行項(xiàng)目。鼠標(biāo)右鍵點(diǎn)擊”webrssreader”項(xiàng)目,選擇”運(yùn)行項(xiàng)目”。


    圖三: 運(yùn)行程序

     

  2. 運(yùn)行結(jié)果如下。


圖四:程序運(yùn)行結(jié)果

四:總結(jié)

RSS屬于Web2.0的一種應(yīng)用技術(shù)。Web2.0提倡個(gè)性化與參與性。而這個(gè)簡(jiǎn)單實(shí)例的開(kāi)發(fā)中,采用的都是一些開(kāi)源軟件,開(kāi)源軟件更是”人人為我,我為人人”精神的一種體現(xiàn)。很多時(shí)候,我們不需要自己從頭開(kāi)發(fā)一些工具,站在前人的肩膀上,開(kāi)發(fā)出一些更好的應(yīng)用也許是程序員們更應(yīng)該考慮的事情。


作者介紹:

李力目前在Sun Microsystems任高級(jí)軟件工程師,有近十年軟件開(kāi)發(fā)經(jīng)驗(yàn),曾就職于AIGCA等公司,任軟件工程師及系統(tǒng)分析員等職位,在J2EE領(lǐng)域有豐富的實(shí)際開(kāi)發(fā)經(jīng)驗(yàn)。聯(lián)系方式:Ada.Li@Sun.com。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用jsp解析RSS結(jié)果滾動(dòng)顯示
RSS 閱讀器
java rss lib 評(píng)測(cè)
我是這樣第一時(shí)間發(fā)掘全球最新影視作品的
常用的中文在線 RSS 閱讀器
Newsalloy是迄今為止我見(jiàn)過(guò)最完美的一個(gè)在線RSS閱讀器了,看了Newsalloy,你就會(huì)感覺(jué)以前使用的其他RSS閱讀器簡(jiǎn)直不能望其項(xiàng)背。
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服