用JSP技術(shù)實(shí)現(xiàn)RSS功能
用JSP技術(shù)實(shí)現(xiàn)RSS功能首先我們來看下什么是RSS,RSS(也叫聚合內(nèi)容,Really Simple Syndication)現(xiàn)在用的已經(jīng)很廣啦,最初的RSS要追溯到1995年,當(dāng)Ramanathan V. Guha和其他在蘋果電腦公司的高級技術(shù)組開發(fā)了一個(gè)測試的內(nèi)容框架。更多有關(guān)RSS的資料可查看這里,下面我們來為我們的JSP網(wǎng)站生成RSS。
用JSP技術(shù)實(shí)現(xiàn)RSS功能之最基本的RSS結(jié)構(gòu):
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
- xmlns:wfw="http://wellformedweb.org/CommentAPI/"
- xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
- </rss>
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <rss version="2.0"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
- xmlns:wfw="http://wellformedweb.org/CommentAPI/"
- xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
- </rss>
用JSP技術(shù)實(shí)現(xiàn)RSS功能其實(shí)就是一個(gè)XML文件!
在<rss></rss>之間我們可以自由配置自己要發(fā)布的RSS的格式。例如此次我們要發(fā)布的RSS是這樣的:
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" x
- mlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
- xmlns:wfw="http://wellformedweb.org/CommentAPI/" x
- mlns:slash="http://purl.org/rss/1.0/modules/slash/">
- <channel>
- <item>
- <title>JSP網(wǎng)站RSS的實(shí)現(xiàn)</title>
- <author>neeke</author>
- <pubDate>2008-10-04</pubDate>
- <description>這是來自尼克技術(shù)博客博客的RSS</description>
- <category>J2EE技術(shù)</category>
- </item>
- </channel>
- </rss>
了解了它的結(jié)構(gòu)實(shí)現(xiàn)起來就容易了。我們創(chuàng)建IO流,并從數(shù)據(jù)庫中獲取到我們要發(fā)布的RSS資源的集合,然后按照它的格式與結(jié)構(gòu)一行一行的寫入到一個(gè)RSS.XML文件中即可。
- public static void publishRss(String rssPath)
- {
- //獲得要發(fā)布的RSS數(shù)據(jù)集合
- ArrayList rssArticle = ArticleManager.getArticlesAll();
- try { //創(chuàng)建輸入輸出流
- FileWriter fw = new FileWriter(rssPath);
- BufferedWriter bw = new BufferedWriter(fw); //開始按照格式寫入數(shù)據(jù)
- bw.write(
- "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n");
- bw.write("<?xml-stylesheet type=\"text/xsl\" href=\"CSS/rss.xslt\"?>");
- bw.write("<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\"
- xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\"
- xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\"
- xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\">\r\n");
- bw.write("<channel>\r\n");
- for (int i = 0; i < rssArticle.size(); i++) {
- ArticleBean article = (ArticleBean) rssArticle.get(i);
- bw.write("<item>\r\n");
- bw.write("<title>" + article.getTitle() + "</title>\r\n");
- bw.write("<author>" + article.getAuthorId() + "</author>\r\n");
- bw.write("<pubDate>" + article.getPostTime() + "</pubDate>\r\n");
- bw.write("<description>" + article.getIntro() +
- "</description>\r\n");
- bw.write("<category>" + article.getCateId() + "</category>\r\n");
- bw.write("</item>\r\n");
- }
- bw.write("</channel>\r\n");
- bw.write("</rss>");
- //關(guān)閉流,RSS發(fā)布完畢。
- bw.close();
- fw.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
這樣用JSP實(shí)現(xiàn)RSS就發(fā)布完畢了,經(jīng)過我的測試打開后會提示出錯,用記事本打開生成的源文件,然而我們的RSS文件是一點(diǎn)問題都沒有的哇,怎么可能呢?接著又用JBuilder打開這個(gè)XML文件,暈倒~漢字全是亂碼,立刻意識到問題出在了哪里了。在哪呢?其實(shí)就是文件的編碼問題!將原先bw.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n");該行代碼中的UTF-8改為GBK,重新跑一次程序,一切OK!
【編輯推薦】