疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Spring rss 实例

Posted on 2012-05-09 10:01 疯狂 阅读(2885) 评论(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.jarjdom.jar

2:加入视图解析(这里使用BeanNameViewResolver,此resolver的原理是返回的viewNamespringcontext里面的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

返回:

 

 


只有注册用户登录后才能发表评论。


网站导航: