您的位置:首页 > 编程语言 > Java开发

用spring,rome实现rss,atom

2010-04-22 13:10 330 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: