Rory's Blog
          Happy study,Happy work,Happy life
          posts - 22,  comments - 46,  trackbacks - 0
          Rss,Atom,基本上是Web2.0的基本特征,今天終于有時(shí)間決定實(shí)現(xiàn)一下。對(duì)于動(dòng)態(tài)的Rss,Atom其實(shí)就是選取最新的內(nèi)容,迭迨一下生成一個(gè)固定格式的xml文件就可以了。其實(shí)也很簡(jiǎn)單。
          ?????? 我用webwork2,用freemarker做模版,在網(wǎng)上找了一個(gè)標(biāo)準(zhǔn)的Rss2.0格式就生成我的模版文件rss.ftl
          <?xml?version="1.0"?encoding="UTF-8"?>
          <rss?version="2.0">
          <channel>
          <title><![CDATA[我的小站]]></title>
          <link>http://leaf.jdk.cn/</link>
          <description><![CDATA[泡出好心情,泡出好技術(shù)]]></description>
          <language>zh-cn</language>
          <copyright><![CDATA[Copyright?2006?PaoPao?v4.0]]></copyright>
          <webMaster><![CDATA[rory.cn@gmail.com?(Rory?Ye)]]></webMaster>
          <generator>PaoPao?v4.0</generator>?
          ????
          <image>
          ????????
          <title>我的小站</title>?
          ????????
          <url>http://leaf.jdk.cn/logo.gif</url>?
          ????????
          <link>http://leaf.jdk.cn</link>?
          ????????
          <description>莫多泡泡2006</description>?
          ????
          </image>
          ????
          <#list?blogs?as?blog>
          ????
          <item>
          ????????
          <link>http://leaf.jdk.cn/entry.action?entryId=${blog.id}</link>
          ????????
          <title><![CDATA[${blog.title}]]></title>
          ????????
          <author>${blog.authorMail}(${blog.author})</author>
          ????????
          <category><![CDATA[?${blog.categories}?]]></category>
          ????????
          <pubDate>${blog.pubDate}</pubDate>
          ????????
          <guid>http://leaf.jdk.cn/entry.action?id=${blog.id}</guid>????
          ????????
          <description><![CDATA[${blog.content}]]></description>
          ????
          </item>
          ????
          </#list>
          </channel>
          </rss>
          我在rss.action里面去取blogs就可以了。
          ????public?String?execute()?throws?Exception?{
          ????????PaginationSupport?ps?
          =?blogManager.getBlogsByPage(0);
          ????????blogs?
          =?new?ArrayList();
          ????????
          ????????
          for(Iterator?ite?=?ps.getItems().iterator();?ite.hasNext();){
          ????????????Blog?blog?
          =?(Blog)ite.next();
          ????????????WrapRssBlog?wrapBlog?
          =?new?WrapRssBlog();
          ????????????wrapBlog.setId(blog.getId());
          ????????????wrapBlog.setAuthor(blog.getAuthor().getNickname());
          ????????????wrapBlog.setAuthorMail(blog.getAuthor().getMail());
          ????????????wrapBlog.setTitle(blog.getTitle());
          ????????????wrapBlog.setContent(StringUtil.extractText(blog.getContent()));
          ????????????wrapBlog.setPubDate(DateUtil.formatRssDate(blog.getPostTime()));
          ????????????StringBuffer?sb?
          =?new?StringBuffer();
          ????????????
          for(Iterator?ite2?=?blog.getCategories().iterator();?ite2.hasNext();){
          ????????????????Category?cate?
          =?(Category)?ite2.next();
          ????????????????sb.append(
          "?")
          ??????????????????.append(cate.getName());
          ????????????}
          ????????????wrapBlog.setCategories(sb.toString());
          ????????????blogs.add(wrapBlog);
          ????????}
          ????????
          return?super.execute();
          ????}
          這里把blog包裝了一下,主要是處理了一下日期,內(nèi)容,還有把分類(lèi)拼成字符串。關(guān)于日期的處理,參考了飛云小俠寫(xiě)的rss日期的研究。實(shí)現(xiàn)代碼如下。
          ????public?static?String?formatRssDate(Date?date){
          ????????SimpleDateFormat?sdf?
          =?new?SimpleDateFormat("EEE,?d?MMM?yyyy?HH:mm:ss?z",Locale.US);
          ????????
          //TODO?TimeZone
          ????????SimpleTimeZone?zone?=?new?SimpleTimeZone(8,"GMT");
          ????????sdf.setTimeZone(zone);
          ????????
          return?sdf.format(date);
          ????}
          這樣就得到了這樣的日期
          Thu, 6 Apr 2006 16:01:36 GMT
          做好了這些,配置一下action
          ????????<action?name="rss"?class="cn.jdk.leaf.action.RssAction">????????
          ????????????
          <result?name="success"?type="freemarker">/WEB-INF/pages/rss.ftl</result>
          ????????
          </action>
          不過(guò)像這樣配置的話(huà),你訪(fǎng)問(wèn)http://xxx.xxx.com/rss.action看到的不是一個(gè)xml
          因?yàn)榉祷亟Y(jié)果的contentType是text/html.而不是xml,這樣是不行的??戳艘幌聎ebwork源碼。原來(lái)可以這樣簡(jiǎn)單的解決。改成這樣配置就可以了。
          ????????<action?name="rss"?class="cn.jdk.leaf.action.RssAction">
          ????????????
          <result?name="success"?type="freemarker">
          ????????????????
          <param?name="location">/WEB-INF/pages/rss.ftl</param>
          ????????????????
          <param?name="contentType">application/xml</param>
          ????????????
          </result>
          ????????
          </action>

          簡(jiǎn)單吧。其實(shí)你還可以把這個(gè)contentType改成其他類(lèi)型的。比如excle的。這樣用戶(hù)執(zhí)行就可以得到一個(gè)xls文件。哈哈。
          posted on 2006-04-10 22:40 莫多 閱讀(1348) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): Webwork

          FeedBack:
          # re: webwork+freemarker輕松實(shí)現(xiàn)Rss,Atom
          2007-03-30 16:27 | 曉菲

          Rory老師:您好!

          我是電子工業(yè)出版社博文視點(diǎn)的編輯曉菲,有幸在網(wǎng)上拜讀到您的大作,得知您比較喜歡RSS與Atom方面的知識(shí)。博文視點(diǎn)現(xiàn)在正在尋找《RSS and Atom in Action》一書(shū)的譯者,不知您是否有興趣。

          如果您愿意與博文視點(diǎn)關(guān)于此書(shū)進(jìn)行更進(jìn)一步的溝通,敬請(qǐng)您與我聯(lián)系,我的郵箱地址是:xiaofei@broadview.com.cn

          Thanks  回復(fù)  更多評(píng)論
            
          # re: webwork+freemarker輕松實(shí)現(xiàn)Rss,Atom
          2008-02-23 11:24 | nika
          This is website.a lot of guys can service for you , most skilled levelers and The price of power leveling. Give all customers the best and cheap price. The best and securest way to power level your character to your desired high level fast. the website already have done near a number of orders for wow power leveling and offers professional powerleveling service on most popular MMOGs.   回復(fù)  更多評(píng)論
            

          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)(27)

          隨筆檔案(22)

          Friends

          搜索

          •  

          積分與排名

          • 積分 - 62467
          • 排名 - 845

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 肃宁县| 临沂市| 大方县| 呼图壁县| 镇康县| 沙河市| 平远县| 莱芜市| 菏泽市| 黄平县| 汉源县| 喜德县| 乐至县| 禹州市| 孝昌县| 鞍山市| 乌拉特前旗| 万盛区| 岳池县| 泰和县| 酉阳| 密云县| 海口市| 津市市| 玉山县| 普兰店市| 甘泉县| 池州市| 南溪县| 和顺县| 东明县| 涞水县| 湘乡市| 和林格尔县| 廊坊市| 柏乡县| 辽阳县| 鄂托克旗| 余江县| 福州市| 淄博市|