• spring mvc: rss(xml)输出


    准备:

    rss包插件

     Rome 库及其依赖项rome-utils,jdom和slf4j
    
    <!-- rss源依赖 -->
    	<!-- https://mvnrepository.com/artifact/com.rometools/rome -->
    	<dependency>
    	    <groupId>com.rometools</groupId>
    	    <artifactId>rome</artifactId>
    	    <version>1.8.0</version>
    	</dependency>
    	<!-- https://mvnrepository.com/artifact/com.rometools/rome-utils -->
    	<dependency>
    	    <groupId>com.rometools</groupId>
    	    <artifactId>rome-utils</artifactId>
    	    <version>1.8.0</version>
    	</dependency>
    	<!-- https://mvnrepository.com/artifact/org.jdom/jdom -->
    	<dependency>
    	    <groupId>org.jdom</groupId>
    	    <artifactId>jdom</artifactId>
    	    <version>2.0.2</version>
    	</dependency>
    	<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    	<dependency>
    	    <groupId>org.slf4j</groupId>
    	    <artifactId>slf4j-api</artifactId>
    	    <version>1.7.7</version>
    	</dependency>
    

      

    需要Bean视图解析

    <!-- bean视图解析 -->			
    <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>		
    

      

    同时需要 一个RSSFeedViewer.java(类似的java来实现view视图)

    需要继承:org.springframework.web.servlet.view.feed.AbstractRssFeedView 并复写:buildFeedItems,buildFeedMetadata

    视图名:rssViewer(id名)

    <bean id="rssViewer" class="json.RSSFeedViewer"/>
    

      

    RSS的基本元素

    RSSMessage.java

    package json;
    
    import java.util.Date;
    
    public class RSSMessage {
    
    	String title;
    	String url;
    	String summary;
    	Date createDate;
    	
    	public String getTitle() {
    		return title;
    	}
    	public void setTitle(String title) {
    		this.title = title;
    	}
    	public String getUrl() {
    		return url;
    	}
    	public void setUrl(String url) {
    		this.url = url;
    	}
    	public String getSummary() {
    		return summary;
    	}
    	public void setSummary(String summary) {
    		this.summary = summary;
    	}
    	public Date getCreateDate() {
    		return createDate;
    	}
    	public void setCreateDate(Date createDate) {
    		this.createDate = createDate;
    	}	
    	
    }
    

      

    RSSFeedViewer视图view,继承AbstractRssFeedView(org.springframework.web.servlet.view.feed.AbstractRssFeedView)

    并复写:buildFeedMetadata, buildFeedItems

    其中:buildFeedMetadata是增加rss(xml)的说明性的内容,buildFeedItems对数据重新组长成需要的格式

    其中:List<RSSMessage> list = (List<RSSMessage>) model.get("person"); 是RssController.java传递过来的

    package json;
    
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.view.feed.AbstractRssFeedView;
    
    import com.rometools.rome.feed.rss.Channel;
    import com.rometools.rome.feed.rss.Content;
    import com.rometools.rome.feed.rss.Item;;
    
    public class RSSFeedViewer extends AbstractRssFeedView {	
    	
    	
    	@Override
    	protected List<Item> buildFeedItems(Map<String, Object> model, HttpServletRequest request,
    			HttpServletResponse response) throws Exception {
    		// TODO Auto-generated method stub
    		
    		
    		//获取controller渲染过来的数据
    		List<RSSMessage> list = (List<RSSMessage>) model.get("person");
    		List<Item> items = new ArrayList<Item>(list.size());
    		for(RSSMessage tempContent: list)
    		{
    			Item item = new Item();
    			Content content = new Content();
    			content.setValue(tempContent.getSummary());
    			
    			item.setContent(content);
    			item.setTitle(tempContent.getTitle());
    			item.setLink(tempContent.getUrl());
    			item.setPubDate(tempContent.getCreateDate());
    			
    			items.add(item);
    		}
    		
    		
    		return items;
    	}
    
    	@Override
    	protected void buildFeedMetadata(Map<String, Object> model, Channel feed, HttpServletRequest request) {
    		// TODO Auto-generated method stub
    		
    		//设置头部信息
    		feed.setTitle("school");
    		feed.setDescription("suzhou school");
    		feed.setLink("http://www.sina.com.cn");
    		
    		super.buildFeedMetadata(model, feed, request);
    	}
    
    	
    	
    }
    

      

    RssController.java

    其中:mv.addObject("person", list) 是传递到RSSFeedViewer视图中去的

    package json;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class RssController {
    
    	@RequestMapping(value="/rss/list", method=RequestMethod.GET)
    	public ModelAndView rss()
    	{
    		List<RSSMessage> list = new ArrayList<RSSMessage>();
    		RSSMessage rss = new RSSMessage();
    		rss.setTitle("张三");
    		rss.setUrl("http://www.sina.com.cn");
    		rss.setSummary("张三合肥市委书记,省委常委...");
    		rss.setCreateDate(new Date());
    		list.add(rss);
    		
    		rss.setTitle("李四");
    		rss.setUrl("http://www.baidu.com");
    		rss.setSummary("李四省委秘书长,合肥市委副书记...");
    		rss.setCreateDate(new Date());
    		list.add(rss);
    		
    		ModelAndView mv = new ModelAndView();
    		mv.setViewName("rssViewer");
    		mv.addObject("person", list);
    		return mv;
    	}
    	
    }
    

      

    访问地址:http://localhost:8080/gugua3/rss/list

    <?xml version="1.0" encoding="UTF-8"?>
    <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
      <channel>
        <title>school</title>
        <link>http://www.sina.com.cn</link>
        <description>suzhou school</description>
        <item>
          <title>鏉庡洓</title>
          <link>http://www.baidu.com</link>
          <content:encoded>鏉庡洓鐪佸�绉樹功闀匡紝鍚堣偉甯傚�鍓�功璁�...</content:encoded>
          <pubDate>Thu, 17 May 2018 03:51:46 GMT</pubDate>
        </item>
        <item>
          <title>鏉庡洓</title>
          <link>http://www.baidu.com</link>
          <content:encoded>鏉庡洓鐪佸�绉樹功闀匡紝鍚堣偉甯傚�鍓�功璁�...</content:encoded>
          <pubDate>Thu, 17 May 2018 03:51:46 GMT</pubDate>
        </item>
      </channel>
    </rss>
    

      

  • 相关阅读:
    hdu 1199 Color the Ball 离散线段树
    poj 2623 Sequence Median 堆的灵活运用
    hdu 2251 Dungeon Master bfs
    HDU 1166 敌兵布阵 线段树
    UVALive 4426 Blast the Enemy! 计算几何求重心
    UVALive 4425 Another Brick in the Wall 暴力
    UVALive 4423 String LD 暴力
    UVALive 4872 Underground Cables 最小生成树
    UVALive 4870 Roller Coaster 01背包
    UVALive 4869 Profits DP
  • 原文地址:https://www.cnblogs.com/achengmu/p/9050372.html
Copyright © 2020-2023  润新知