spring使用rssfeed
spring使用rssfeed
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import mypackage.rss.view.RssFeedView; /**
* 栏目稿件RSS订阅请求控制器类。
*
*/
@Controller
@RequestMapping({"/rss/c/{columnId}"})
public class ColumnStoriesRssController { @RequestMapping("")
public ModelAndView feed() {
ModelAndView modelAndView = new ModelAndView();
// TODO 从本地缓存获取稿件数据 modelAndView.addObject(RssFeedView.ITEMS_KEY, null);
modelAndView.setView(new RssFeedView());
return modelAndView;
}
}
RSS Feed 视图类
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.jdom2.Element;
import org.springframework.web.servlet.view.feed.AbstractRssFeedView; import mypackage.domain.model.NrCompoStory;
import mypackage.domain.model.NrGalleryStory;
import mypackage.domain.model.NrStory;
import mypackage.domain.model.NrVideoStory;
import mypackage.framework.infras.exception.UnexpectedException;
import com.rometools.rome.feed.rss.Channel;
import com.rometools.rome.feed.rss.Item; /**
* RSS Feed 视图类。
*
*/
public class RssFeedView extends AbstractRssFeedView { /**
* RSS稿件列表KEY
*/
public static final String ITEMS_KEY = "RSS_ITEMS"; /**
* {@inheritDoc}
*/
@Override
protected Channel newFeed() {
Channel channel = new Channel("rss_2.0");
channel.setTitle("${title}");
channel.setLink("${link}");
channel.setEncoding("UTF-8");
channel.setDescription("${description}");
return channel;
} /**
* {@inheritDoc}
*/
@Override
protected List<Item> buildFeedItems(Map<String, Object> model,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
@SuppressWarnings("unchecked")
List<NrStory> stories = (List<NrStory>)model.get(ITEMS_KEY);
List<Item> result = new ArrayList<Item>();
if (stories != null) {
for (NrStory story : stories) {
result.add(createItem(story));
}
} return result;
} /**
* 通过稿件创建RSS Item
*
* @param story 稿件
* @return RSS Item
*/
private Item createItem(NrStory story) {
Item result = null;
if (story instanceof NrCompoStory) {
result = createCompoItem((NrCompoStory)story);
} else if (story instanceof NrGalleryStory) {
result = createGalleryItem((NrGalleryStory)story);
} else if (story instanceof NrVideoStory) {
result = createVideoItem((NrVideoStory)story);
} else {
throw new UnexpectedException("unknow story type.(" + story.getClass().getName() + ")");
} return result;
} /**
* 通过图文稿件创建RSS Item
*
* @param story 稿件
* @return RSS Item
*/
private Item createCompoItem(NrCompoStory story) {
Item result = new Item();
result.setTitle("");
result.setLink("");
result.setDescription(null);
result.setPubDate(null);
Element element = null; // <videoItems>
// <videoItem>
// (see detail in next page)
// </videoItem>
// …...
// </videoItems>
result.setForeignMarkup(Arrays.asList(element)); return result;
} /**
* 通过图集稿件创建RSS Item
*
* @param story 稿件
* @return RSS Item
*/
private Item createGalleryItem(NrGalleryStory story) { return null;
} /**
* 通过视频稿件创建RSS Item
*
* @param story 稿件
* @return RSS Item
*/
private Item createVideoItem(NrVideoStory story) { return null;
}
}
spring使用rssfeed的更多相关文章
- RSS Feeds with Spring Boot
http://nixmash.com/post/rss-feeds-with-spring-boot **************************************** We added ...
- Spring MVC生成RSS源
下面的示例演示如何使用Spring Web MVC框架生成RSS源. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建 ...
- Spring MVC-集成(Integration)-生成RSS源示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_rss_feed.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
随机推荐
- maven Dynamic Web Module 3.0 requires Java 1.6 or newer
maven Dynamic Web Module 3.0 requires Java 1.6 or newer CreateTime--2018年4月19日16:56:42 Author:Mary ...
- Linux 文件系统的目录定义
目录名称 应放置文件的内容 /boot 开机所需文件——内核,开机菜单及所需配置文件等 /dev 任何设备与接口都以文件形式存放在此目录 /etc 配置文件 /home 用户主目录 /bin 单用户维 ...
- java中写sql语句的小小细节
来源于:http://www.cnblogs.com/reine98/p/6180472.html 看如下一条sql语句 1 2 3 4 5 6 String sql="SELECT * F ...
- Spring MVC Beginner’s Guide勘误表
- 17 submitted: last submission 09 Dec 2016 Page number: 213 Qauntity should be: Quantity Page numbe ...
- web.config配置数据库连接(转)
摘自:http://www.cnblogs.com/breezeblew/archive/2008/05/01/1178719.html 第一种: 取连接字符串 string connString = ...
- 苹果越狱后必备软件,总有你需要的!11月23日追加14个,支持【iOS4】
http://bbs.dospy.com/thread-7398730-1-301-2.html越狱后必备软件,总有你需要的!11月23日追加14个,支持[iOS4] 背景自定义插件
- jquery实现高度的获取-位置函数
一.位置函数 1.offset() 获取匹配元素在当前视口的相对偏移.返回的对象包含两个整形属性:top 和 left.此方法只对可见元素有效. 2.innerWidth() 获取第一个匹配元素内部区 ...
- 转 web前端性能分析--实践篇
当我们知道了web前端性能的关键点后,那么接下来要做的就是如何去具体实施并获取这些关键点的数据了.通过前面的学习知道了不少好的工具,经过对比后个人觉得dynatrace还是不错的. 不仅支持ie,ff ...
- Linux内存初始化(二)identity mapping和kernel image mapping
一.前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程.想要了解一些概述性的.框架性的东西可 ...
- [Android&Java]浅谈设计模式-代码篇:观察者模式Observer
观察者,就如同一个人,对非常多东西都感兴趣,就好像音乐.电子产品.Game.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...