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应用程序: 创建一个名 ...
随机推荐
- redis_cluster部署过程
Redis集群1.多个redis节点网络互联,数据共享2.所有的节点都是一主一从(可以是多个从),其中从不提供服务3.不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个 ...
- HDU中大数实现的题目,持续更新(JAVA实现)
HDU1002:大数加法,PE了N次 import java.util.Scanner; import java.math.*; public class Main { public static v ...
- jetBrains设置appium环境
- Java栈之链式栈存储结构实现
一.链栈 采用单链表来保存栈中所有元素,这种链式结构的栈称为链栈. 二.栈的链式存储结构实现 package com.ietree.basic.datastructure.stack; /** * 链 ...
- 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 ...
- Restful概念
文章节选自: http://www.ruanyifeng.com/blog/2011/09/restful https://www.zhihu.com/question/28557115/answer ...
- POJ - 1511 - 两次SPFA
这道题也算是一道模板题,但是第一次用优先队列迪杰斯特拉就T了.1e6的数据量,给了8s,网上其他题解中说要用SPFA. 题意:N个点的带权有向图.每次都从1出发,要到达其余没有被访问过的一个点(发传单 ...
- 【转】深入浅出UML类图
转自:http://www.cppblog.com/API/archive/2013/07/04/201506.html 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin ...
- MySQL中exists与in的使用
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录, ...
- [CLR via C#读后整理]-1.CLR的执行模型
公共语言运行时(Common Language Runtime,CLR)是一个可由多种编程语言使用的"运行时".他主要提供的功能有:程序集加载,内存管理,,安全性,异常处理,线程同 ...