用JSP技术实现RSS功能首先我们来看下什么是RSS,RSS(也叫聚合内容,Really Simple Syndication)现在用的已经很广啦,最初的RSS要追溯到1995年,当Ramanathan V. Guha和其他在苹果电脑公司的高级技术组开发了一个测试的内容框架。更多有关RSS的资料可查看这里,下面我们来为我们的JSP网站生成RSS。
用JSP技术实现RSS功能之最基本的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>
- <?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技术实现RSS功能其实就是一个XML文件!
在<rss></rss>之间我们可以自由配置自己要发布的RSS的格式。例如此次我们要发布的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网站RSS的实现</title>
- <author>neeke</author>
- <pubDate>2008-10-04</pubDate>
- <description>这是来自尼克技术博客博客的RSS</description>
- <category>J2EE技术</category>
- </item>
- </channel>
- </rss>
了解了它的结构实现起来就容易了。我们创建IO流,并从数据库中获取到我们要发布的RSS资源的集合,然后按照它的格式与结构一行一行的写入到一个RSS.XML文件中即可。
- public static void publishRss(String rssPath)
- {
- //获得要发布的RSS数据集合
- ArrayList rssArticle = ArticleManager.getArticlesAll();
- try { //创建输入输出流
- FileWriter fw = new FileWriter(rssPath);
- BufferedWriter bw = new BufferedWriter(fw); //开始按照格式写入数据
- 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>");
- //关闭流,RSS发布完毕。
- bw.close();
- fw.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
这样用JSP实现RSS就发布完毕了,经过我的测试打开后会提示出错,用记事本打开生成的源文件,然而我们的RSS文件是一点问题都没有的哇,怎么可能呢?接着又用JBuilder打开这个XML文件,晕倒~汉字全是乱码,立刻意识到问题出在了哪里了。在哪呢?其实就是文件的编码问题!将原先bw.write("<?xml version=/"1.0/" encoding=/"UTF-8/" standalone=/"yes/"?>/r/n");该行代码中的UTF-8改为GBK,重新跑一次程序,一切OK!