使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:


新闻系统中调用重新生成RSS文件的代码如下:

    /**
     * 重新生成RSS文件.
     *
     * @param nid 更新的新闻的id,如果不包含在最新的新闻里,则不更新RSS.nid <1则更新
     *
     * @return 是否成功
     */
    private boolean renewRSS(int nid)
    {
        List newsList = 装载新闻的代码

        boolean shouldUpdate = false;
        if (nid > 0)
        {
            for (int i = 0; i < newsList.size(); i++)
            {
                NewsItem aNews = (NewsItem) newsList.get(i);
                if (aNews.getNid() == nid)
                {
                    shouldUpdate = true;
                    break;
                }
            }
        }
        else
        {
            shouldUpdate = true;
        }

        //不更新,则返回
        if (!shouldUpdate)
        {
            return true;
        }

        Map root = new HashMap();
       
        root.put("rssutil",new RSSUtil());

        root.put("newslist", newsList);
       
        root.put("now",DateTime.getNowTimestamp());

        geneFileByFreeMarker("/news/rss.ftl", root, PropSet.getStringProp("rss.rssdir"), PropSet
                        .getStringProp("rss.rssfile"), "UTF-8");

        return true;
    }



在增加或者更新/删除新闻的地方需要调用这个renewRSS函数.

(二)JSP动态方式

相对静态方式而言,简单的多,不过效率上可能就不太好了.

webwork2的Action代码如下:

        newsList = 装载新闻代码
        return SUCCESS; 


视图Jsp如下:


<%@ page contentType="text/xml; charset=UTF-8"%>
<%@ taglib uri="jscud" prefix="jscud" %>
<%@ taglib uri="webwork" prefix="ww" %>
<ww:bean name="’com.jscud.www.util.RSSUtil’" id="rssUtil" />
<?xml version="1.0" encoding="UTF-8" ?>
 <rss version="2.0">
 <channel>
  <title>JScud Develop</title>
  <link>http://www.jscud.com/</link>
  <language>zh-cn</language>
  <description >JScud Develop By Scud</description>
  <webMaster>xxx@21cn.com(scud)</webMaster>
  <lastBuildDate><ww:property value="#rssUtil.nowDateTime" /></lastBuildDate>
   
   <ww:iterator value="newsList">
  <item>
   <title><ww:property value="#rssUtil.formatString2XML(title)"/></title>
   <link>http://www.jscud.com/srun/news/viewhtml/<ww:property  value="htmlFilePath" />/<ww:property  value="nid" />.htm</link>
   <pubDate><ww:property  value="#rssUtil.formatRssDate(addtime)" /></pubDate>
   <description><![CDATA[
  <ww:property value="#rssUtil.formatRssCData(showContent)"/>
   ]]>
   </description>
   </item>
 </ww:iterator>
  </channel>
 </rss>

本文关键:使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top