准备:
rss包插件
Rome 库及其依赖项rome-utils,jdom和slf4j
com.rometools
rome
1.8.0
com.rometools
rome-utils
1.8.0
org.jdom
jdom
2.0.2
org.slf4j
slf4j-api
1.7.7
需要Bean视图解析
同时需要 一个RSSFeedViewer.java(类似的java来实现view视图)
需要继承:org.springframework.web.servlet.view.feed.AbstractRssFeedView 并复写:buildFeedItems,buildFeedMetadata
视图名:rssViewer(id名)
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 list = (List) 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 buildFeedItems(Map model, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
//获取controller渲染过来的数据
List list = (List) model.get("person");
List items = new ArrayList(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 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 list = new ArrayList();
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
schoolhttp://www.sina.com.cn
suzhou school
鏉庡洓http://www.baidu.com
鏉庡洓鐪佸绉樹功闀匡紝鍚堣偉甯傚鍓功璁�...
Thu, 17 May 2018 03:51:46 GMT
鏉庡洓http://www.baidu.com
鏉庡洓鐪佸绉樹功闀匡紝鍚堣偉甯傚鍓功璁�...
Thu, 17 May 2018 03:51:46 GMT