Posted on 2012-05-09 10:01
瘋狂 閱讀(2894)
評論(0) 編輯 收藏 所屬分類:
spring
Spring rss 實例
從spring 3 開始可以使用內置的方法來實現實現rss或者atom
org.springframework.web.servlet.view.feed.AbstractRssFeedView
org.springframework.web.servlet.view.feed.AbstractAtomFeedView
本實例使用org.springframework.web.servlet.view.feed.AbstractRssFeedView來實現rss
步驟
1:加入相關jar包
加入rome-x.jar和jdom.jar
2:加入視圖解析(這里使用BeanNameViewResolver,此resolver的原理是返回的viewName和spring的context里面的name相同),如果有多個resolver需要設置order
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="0"/>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp">
<property name="order" value="1"/>
</bean>
3:實現RssView,繼承自AbstractRssFeedView
@Component("rssView")//這個地方的配置要和后面controller的viewName一樣

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.setValue(rssItem.getDescription());
feedItem.setDescription(desc);
feedItem.setLink(rssItem.getLink());
feedItems.add(feedItem);
}
return feedItems;
}
}
4 Controller
@Controller
@RequestMapping(value = "rss")

public class RssMgr
{
@RequestMapping(value = "test_rss.htm")

public String testRss(Model model)
{
List<RssItem> rssItems = new ArrayList<RssItem>();

for (int i = 0; i < 5; i++)
{
RssItem n = new RssItem();
n.setTitle("第【"+i+"】條spring Rss測試消息標題");
n.setDescription("第【"+i+"】測試消息內容說明");
n.setLink("http://localhost:8080/springdemo/someurl.html");
n.setAuthor("作者:瘋狂");
n.setDatePublished(new Date());
rssItems.add(n);
}
model.addAttribute("rssItemList", rssItems);
// 頻道的相關信息
model.addAttribute("feedTitle", "spring RSS 測試");
model.addAttribute("feedDesc", "spring RSS 測試頭條新聞");
model.addAttribute("feedLink",
http://localhost:8080/springdemo/rss/test_rss.htm);
return "rssView";
}

}

訪問:http://localhost:8080/springdemo/rss/test_rss.htm
返回:
