准备:

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)输出的更多相关文章

  1. Spring MVC 返回 xml json pdf 数据的配置方法

    <!-- Spring MVC 返回 xml 数据的配置方法 -->     <bean class="org.springframework.web.servlet.vi ...

  2. Spring MVC 的 XML 配置方式

    索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: solution/pom.xml solution/webapi/pom.xml solution/mapper/ ...

  3. Spring mvc web.xml中 urlpatten的配置问题

    在使用spring mvc 是我们会配置spring 的DispatcherServlet作为请求的转发器. <servlet> <servlet-name>spring< ...

  4. 使用高性能xml序列化框架jibx作为spring mvc的xml view

    package org.springframework.web.servlet.view.xml; import java.io.ByteArrayOutputStream; import java. ...

  5. Spring MVC 的xml一些配置

    1.可以自动加载注解驱动,通过注解找到对应Controller <!-- spring MVC 注解驱动 --> <mvc:annotation-driven></mvc ...

  6. Spring MVC web.xml+servlet.xml

    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...

  7. spring mvc 返回xml格式数据

    1.问题 : 因为业务需要,需要发送xml格式的数据,使用spring mvc 自己解析,就不用费心去自己搞这些东西. 2.解决: 新建一个实体类,直接在实体类中添加注解即可,如下: @XmlRoot ...

  8. Spring MVC Web.xml配置

    Web.xml spring&spring mvc 在web.xml中定义contextConfigLocation参数,Spring会使用这个参数去加载所有逗号分隔的xml文件,如果没有这个 ...

  9. Spring MVC生成XML

    以下示例演示如何使用Spring Web MVC框架生成XML.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一个名 ...

随机推荐

  1. redis_cluster部署过程

    Redis集群1.多个redis节点网络互联,数据共享2.所有的节点都是一主一从(可以是多个从),其中从不提供服务3.不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个 ...

  2. HDU中大数实现的题目,持续更新(JAVA实现)

    HDU1002:大数加法,PE了N次 import java.util.Scanner; import java.math.*; public class Main { public static v ...

  3. jetBrains设置appium环境

  4. Java栈之链式栈存储结构实现

    一.链栈 采用单链表来保存栈中所有元素,这种链式结构的栈称为链栈. 二.栈的链式存储结构实现 package com.ietree.basic.datastructure.stack; /** * 链 ...

  5. Get a better look at the 2014 Nike Hyperrev

    There's a couple of Nike Hyperrev For Sale Delay climax frames lead that will list for this calendar ...

  6. Restful概念

    文章节选自: http://www.ruanyifeng.com/blog/2011/09/restful https://www.zhihu.com/question/28557115/answer ...

  7. POJ - 1511 - 两次SPFA

    这道题也算是一道模板题,但是第一次用优先队列迪杰斯特拉就T了.1e6的数据量,给了8s,网上其他题解中说要用SPFA. 题意:N个点的带权有向图.每次都从1出发,要到达其余没有被访问过的一个点(发传单 ...

  8. 【转】深入浅出UML类图

    转自:http://www.cppblog.com/API/archive/2013/07/04/201506.html 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin ...

  9. MySQL中exists与in的使用

    exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录, ...

  10. [CLR via C#读后整理]-1.CLR的执行模型

    公共语言运行时(Common Language Runtime,CLR)是一个可由多种编程语言使用的"运行时".他主要提供的功能有:程序集加载,内存管理,,安全性,异常处理,线程同 ...