zoukankan      html  css  js  c++  java
  • Spring 3 MVC And RSS Feed Example

    In Spring 3, comes with a abstract class “AbstractRssFeedView” to generate RSS feed view, using java.net’s ROME package. In this tutorial, we show you how to generate a RSS feed view from Spring MVC framework.

    Technologies used :

    1. Spring 3.0.5.RELEASE
    2. ROME 1.0.0
    3. JDK 1.6
    4. Eclipse 3.6
    5. Maven 3

    At the end of the tutorial, when you visit this URL – http://localhost:8080/SpringMVC/rest/rssfeed, browser will return following RSS feed content :

    <?xml version="1.0" encoding="UTF-8"?>
    <rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
      <channel>
        <title>Mkyong Dot Com</title>
        <link>http://www.mkyong.com</link>
        <description>Java Tutorials and Examples</description>
        <item>
          <title>Spring MVC Tutorial 1</title>
          <link>http://www.mkyong.com/spring-mvc/tutorial-1</link>
          <content:encoded>Tutorial 1 summary ...</content:encoded>
          <pubDate>Tue, 26 Jul 2011 02:26:08 GMT</pubDate>
        </item>
        <item>
          <title>Spring MVC Tutorial 2</title>
          <link>http://www.mkyong.com/spring-mvc/tutorial-2</link>
          <content:encoded>Tutorial 2 summary ...</content:encoded>
          <pubDate>Tue, 26 Jul 2011 02:26:08 GMT</pubDate>
        </item>
      </channel>

    </rss> 

    1. Directory Structure

    Review the final project structure.

    directory structure

    2. Project Dependencies

    For Maven, declares following dependencies in your pom.xml.

    <properties>
            <spring.version>3.0.5.RELEASE</spring.version>
        </properties>
     
        <dependencies>
     
            <!-- Spring 3 dependencies -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
     
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
     
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
     
            <!-- RSS -->
            <dependency>
                <groupId>net.java.dev.rome</groupId>
                <artifactId>rome</artifactId>
                <version>1.0.0</version>
            </dependency>
     
            <!-- for compile only, your container should have this -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
     

        </dependencies> 

    3. Model

    A simple POJO, later use this object to generate the RSS feed content.

    package com.mkyong.common.model;
     
    import java.util.Date;
     
    public class SampleContent {
     
        String title;
        String url;
        String summary;
        Date createdDate;
     
        //getter and seeter methods

    4. AbstractRssFeedView

    Create a class extends AbstractRssFeedView, and override the buildFeedMetadata and buildFeedItems methods, below code should be self-explanatory.

    package com.mkyong.common.rss;
     
    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.mkyong.common.model.SampleContent;
    import com.sun.syndication.feed.rss.Channel;
    import com.sun.syndication.feed.rss.Content;
    import com.sun.syndication.feed.rss.Item;
     
    public class CustomRssViewer extends AbstractRssFeedView {
     
        @Override
        protected void buildFeedMetadata(Map<String, Object> model, Channel feed,
            HttpServletRequest request) {
     
            feed.setTitle("Mkyong Dot Com");
            feed.setDescription("Java Tutorials and Examples");
            feed.setLink("http://www.mkyong.com");
     
            super.buildFeedMetadata(model, feed, request);
        }
     
     
        @Override
        protected List<Item> buildFeedItems(Map<String, Object> model,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
     
            @SuppressWarnings("unchecked")
            List<SampleContent> listContent = (List<SampleContent>) model.get("feedContent");
            List<Item> items = new ArrayList<Item>(listContent.size());
     
            for(SampleContent tempContent : listContent ){
     
                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.getCreatedDate());
     
                items.add(item);
            }
     
            return items;
        }
     

    6. Spring Bean Registration

    In a Spring bean definition file, enable the auto component scanning, and register your “CustomRssViewer” class and “BeanNameViewResolver” view resolver, so that when view name “rssViewer” is returned, Spring know it should map to bean id “rssViewer“.

    File : mvc-dispatcher-servlet.xml

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="
            http://www.springframework.org/schema/beans     
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.0.xsd"
    >
     
        <context:component-scan base-package="com.mkyong.common.controller" />
     
        <!-- Map returned view name "rssViewer" to bean id "rssViewer" -->
        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
     
        <bean id="rssViewer" class="com.mkyong.common.rss.CustomRssViewer" />
     

    </beans> 

    Note

    File content of web.xml is omitted, just a standard configuration, if you are interest, download this whole project at the end of the article.

    7. Demo

    URL : http://localhost:8080/SpringMVC/rest/rssfeed

    spring mvc and rss feed demo
    How about Atom?
    For Atom, you just need to extends AbstractAtomFeedView, instead of AbstractRssFeedView.

    Download Source Code

    Download it – SpringMVC-RSS-Feed-Example.zip (9 KB) 

  • 相关阅读:
    [转]DllMain中不当操作导致死锁问题的分析——DllMain中要谨慎写代码(完结篇)
    【机器学习】深入理解人工神经网络结构
    【机器学习】初识人工神经网络
    【机器学习】通过正则化解决过拟合问题
    【机器学习】逻辑回归
    【机器学习】用Octave实现一元线性回归的梯度下降算法
    【机器学习】对梯度下降算法的进一步理解
    【机器学习】从分类问题区别机器学习类型 与 初步介绍无监督学习算法 PAC
    【机器学习】感知机学习算法(PLA)
    【机器学习】1 监督学习应用与梯度下降
  • 原文地址:https://www.cnblogs.com/chenying99/p/2783726.html
Copyright © 2011-2022 走看看