用spring,rome实现rss,atom

本文介绍如何使用Spring 3内置的RSS视图组件创建RSS feeds。通过具体代码示例展示了如何配置Spring MVC,创建RSS Item实体类及控制器处理请求,并自定义RSS视图类以构造RSS feed元数据和项。
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配置文件中加入

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>


用于显示数据的Item

public class RssItem {
private String title;
private String author;
private Date datePublished;
private String description;
private String link;
}


用spring mvc 来处理一个地址请求

@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方法

@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;
}
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值