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>
spring mvc: rss(xml)输出的更多相关文章
- Spring MVC 返回 xml json pdf 数据的配置方法
<!-- Spring MVC 返回 xml 数据的配置方法 --> <bean class="org.springframework.web.servlet.vi ...
- Spring MVC 的 XML 配置方式
索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: solution/pom.xml solution/webapi/pom.xml solution/mapper/ ...
- Spring mvc web.xml中 urlpatten的配置问题
在使用spring mvc 是我们会配置spring 的DispatcherServlet作为请求的转发器. <servlet> <servlet-name>spring< ...
- 使用高性能xml序列化框架jibx作为spring mvc的xml view
package org.springframework.web.servlet.view.xml; import java.io.ByteArrayOutputStream; import java. ...
- Spring MVC 的xml一些配置
1.可以自动加载注解驱动,通过注解找到对应Controller <!-- spring MVC 注解驱动 --> <mvc:annotation-driven></mvc ...
- Spring MVC web.xml+servlet.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...
- spring mvc 返回xml格式数据
1.问题 : 因为业务需要,需要发送xml格式的数据,使用spring mvc 自己解析,就不用费心去自己搞这些东西. 2.解决: 新建一个实体类,直接在实体类中添加注解即可,如下: @XmlRoot ...
- Spring MVC Web.xml配置
Web.xml spring&spring mvc 在web.xml中定义contextConfigLocation参数,Spring会使用这个参数去加载所有逗号分隔的xml文件,如果没有这个 ...
- Spring MVC生成XML
以下示例演示如何使用Spring Web MVC框架生成XML.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一个名 ...
随机推荐
- Linux系统的SVN客户端使用技巧详解
忽略文件/文件夹 假设想忽略文件temp,cd到temp所在的目录下: $ svn propedit svn:ignore . [注意:请别漏掉最后的点(.表示当前目录),如果报错请看后面] 打开的文 ...
- vue项目中多个入口的配置
出处:http://www.qingpingshan.com/jb/javascript/221105.html 基于vue2.0生成项目,一段时间都在找如何配置成多个页面的.网上有这样的例子相对也是 ...
- Bootstrap 中的插件的学习2(导航)
实例 在导航栏内 下面的实例演示了在导航栏内的下拉菜单的用法: <!DOCTYPE HTML> <html> <head> <link href=" ...
- 启动secondarynamenode时报错
环境: mac系统 + hadoop2.6.0-cdh5.7.0伪分布式 问题一: 在启动hdfs的secondarynamenode时,报错. 正常情况: sumengdeMacBook-Pro: ...
- android解决setOnItemClickListener没有响应
今天遇到一种情况,抽屉式导航栏里的listView的点击事件没有响应点击事件. 查看了下,原来是因为抽屉式导航栏的fragment声明,放在了内容fragment之前,导致点击动作被内容fragmen ...
- googleMapReduce
摘要 MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现.用户首先创建一个Map函数处理一个基于key/value pair的数据集合,输出中间的基于key/value ...
- Chrome搜索设置
https://encrypted.google.com/ncr https://encrypted.google.com/search?{google:RLZ}{google:acceptedSug ...
- php面向对象类中常用的魔术方法
php面向对象类中常用的魔术方法 1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...
- PHP分页及原理
在看本文之前,请确保你已掌握了PHP的一些知识以及MYSQL的查询操作基础哦. 作为一个Web程序,经常要和不计其数的数据打交道,比如会员的数据,文章数据,假如只有几十个会员那很好办,在一页显示就可以 ...
- Docker-docker制作镜像
一.下载镜像 a.以daocloud为mirror下载Nginx镜像 配置daocloud为mirror,下载Nginx镜像:(daocloud官网登陆后,发现镜像里找到Nginx镜像) 下载Ngin ...