用spring,rome实现rss,atom

 

spring 3 里面新增加了下面两个类,用来方便的实现rss和atom
org.springframework.web.servlet.view.feed.AbstractRssFeedView
org.springframework.web.servlet.view.feed.AbstractAtomFeedView

下面演示用spring 3实现rss,除了加入spring 3的web.servlet包外,还要加入rome
-1.0.jar和jdom.jar

在spring配置文件中加入
Xml代码
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>


用于显示数据的Item
Java代码
public class RssItem {
private String title;
private String author;
private Date datePublished;
private String description;
private String link;
}


用spring mvc 来处理一个地址请求
Java代码
@Controller
public class FeedController {

@RequestMapping(
"/rss")
public String rss(Model model) {

List
<RssItem> rssItems = new ArrayList<RssItem>();

RssItem n
= new RssItem();
n.setTitle(
"中国内地发现8例甲流病毒变异病例");
n.setDescription(
"世卫组织证实内地曾出现甲流病毒变种...");
n.setLink(
"http://news.163.com/09/1125/17/5OVTJVQF000120GU.html");
n.setAuthor(
"新华网");
n.setDatePublished(
new Date());

rssItems.add(n);

//加入一个Demo的list数据
model.addAttribute("rssItemList", rssItems);

//频道的相关信息
model.addAttribute("feedTitle","网易头条新闻");
model.addAttribute(
"feedDesc","头条新闻");
model.addAttribute(
"feedLink","http://news.163.com/");

return "rssView";
}

}


继承AbstractRssFeedView类,实现buildFeedMetadata,buildFeedItems方法
Java代码
@Component(
"rssView")
public class RssView extends AbstractRssFeedView {

@Override
protected void buildFeedMetadata(Map<String,Object> model, Channel feed,
HttpServletRequest request) {

String feedTitle
= (String)model.get("feedTitle");
String feedDesc
= (String)model.get("feedDesc");
String feedLink
= (String)model.get("feedLink");

feed.setTitle(feedTitle);
feed.setDescription(feedDesc);
feed.setLink(feedLink);
}

@Override
protected List<Item> buildFeedItems(Map<String, Object> model,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

@SuppressWarnings(
"unchecked")
List
<RssItem> rssItems = (List<RssItem>) model.get("rssItemList");

List
<Item> feedItems = new ArrayList<Item>();
for (RssItem rssItem : rssItems) {
Item feedItem
= new Item();
feedItem.setTitle(rssItem.getTitle());
feedItem.setAuthor(rssItem.getAuthor());
feedItem.setPubDate(rssItem.getDatePublished());

Description desc
= new Description();
desc.setType(
"text/html");
desc.setValue(rssItem.getDescription());
feedItem.setDescription(desc);

feedItem.setLink(rssItem.getLink());
feedItems.add(feedItem);
}

return feedItems;
}
}

 

 

 

posted @ 2010-04-22 13:10  Me疯子_(~  阅读(437)  评论(0)    收藏  举报