国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

用JSP實現基于Web的RSS閱讀器

2024-09-05 00:19:22
字體:
來源:轉載
供稿:網友

一: 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”和項目位置,其余采用缺省,點擊”完成”。


圖一: 創建netbeansweb項目

 

  • 在新建立的”webrssreader”項目中,加入兩個jar文件:

    jdom.jarjdom開源項目中(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全部源代碼

       

    1. 運行項目。鼠標右鍵點擊”webrssreader”項目,選擇”運行項目”。


      圖三: 運行程序

       

    2. 運行結果如下。


    圖四:程序運行結果

    四:總結

    rss屬于web2.0的一種應用技術。web2.0提倡個性化與參與性。而這個簡單實例的開發中,采用的都是一些開源軟件,開源軟件更是”人人為我,我為人人”精神的一種體現。很多時候,我們不需要自己從頭開發一些工具,站在前人的肩膀上,開發出一些更好的應用也許是程序員們更應該考慮的事情。


    作者介紹:

    李力目前在sun microsystems任高級軟件工程師,有近十年軟件開發經驗,曾就職于aig,ca等公司,任軟件工程師及系統分析員等職位,在j2ee領域有豐富的實際開發經驗。聯系方式:[email protected]。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 塘沽区| 平顶山市| 阿勒泰市| 双鸭山市| 泉州市| 南乐县| 叙永县| 都匀市| 凤城市| 辰溪县| 神木县| 东明县| 济南市| 柘荣县| 德兴市| 淳安县| 石台县| 沙雅县| 诏安县| 安国市| 甘洛县| 天镇县| 武鸣县| 利辛县| 绿春县| 教育| 泰兴市| 白朗县| 班玛县| 建湖县| 通榆县| 民权县| 云梦县| 启东市| 深泽县| 和平县| 定日县| 四子王旗| 常宁市| 二手房| 和政县|