準備:java
rss包插件web
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視圖解析spring
<!-- bean視圖解析 --> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
同時須要 一個RSSFeedViewer.java(相似的java來實現view視圖)json
須要繼承:org.springframework.web.servlet.view.feed.AbstractRssFeedView 並複寫:buildFeedItems,buildFeedMetadataapi
視圖名:rssViewer(id名)app
<bean id="rssViewer" class="json.RSSFeedViewer"/>
RSS的基本元素dom
RSSMessage.javaide
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)ui
並複寫:buildFeedMetadata, buildFeedItemsthis
其中: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>