用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配置文件中加入
<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;
	}
}

你可能感兴趣的:(spring,mvc,xml,Web,servlet)