Spring 3 Exemple de flux MVC et RSS

Exemple de flux RSS et MVC Spring 3

Au printemps 3, est livré avec une classe abstraite «AbstractRssFeedView» pour générer une vue de flux RSS, en utilisant le package ROME de java.net. Dans ce didacticiel, nous vous montrons comment générer une vue de flux RSS à partir du framework Spring MVC.

Technologies utilisées:

  1. Spring 3.0.5.RELEASE

  2. ROME 1.0.0

  3. JDK 1.6

  4. Eclipse 3.6

  5. Maven 3

À la fin du didacticiel, lorsque vous visitez cette URL -http://localhost:8080/SpringMVC/rest/rssfeed, le navigateur renverra le contenu du flux RSS suivant:


  
    Mkyong Dot Com
    http://www.example.com
    Java Tutorials and Examples
    
      Spring MVC Tutorial 1
      http://www.example.com/spring-mvc/tutorial-1
      Tutorial 1 summary ...
      Tue, 26 Jul 2011 02:26:08 GMT
    
    
      Spring MVC Tutorial 2
      http://www.example.com/spring-mvc/tutorial-2
      Tutorial 2 summary ...
      Tue, 26 Jul 2011 02:26:08 GMT
    
  

1. Structure du répertoire

Passez en revue la structure finale du projet.

directory structure

2. Dépendances du projet

Pour Maven, déclare les dépendances suivantes dans vospom.xml.

    
        3.0.5.RELEASE
    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
        
            net.java.dev.rome
            rome
            1.0.0
        

        
        
            javax.servlet
            servlet-api
            2.5
            provided
        

    

3. Modèle

Un POJO simple, utiliser plus tard cet objet pour générer le contenu du flux RSS.

package com.example.common.model;

import java.util.Date;

public class SampleContent {

    String title;
    String url;
    String summary;
    Date createdDate;

    //getter and seeter methods
}

4. AbstractRssFeedView

Créez une classe étendAbstractRssFeedView et remplacez les méthodesbuildFeedMetadata etbuildFeedItems, le code ci-dessous devrait être explicite.

package com.example.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.example.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 model, Channel feed,
        HttpServletRequest request) {

        feed.setTitle("Mkyong Dot Com");
        feed.setDescription("Java Tutorials and Examples");
        feed.setLink("http://www.example.com");

        super.buildFeedMetadata(model, feed, request);
    }


    @Override
    protected List buildFeedItems(Map model,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {

        @SuppressWarnings("unchecked")
        List listContent = (List) model.get("feedContent");
        List items = new ArrayList(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;
    }

}

5. Manette

Classe de contrôleur Spring MVC, générez le contenu du flux rss et retournez un nom de vue «rssViewer» (Ce nom de vue appartient au-dessus de «CustomRssViewer», sera enregistré à l'étape 6 plus tard).

package com.example.common.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
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;
import com.example.common.model.SampleContent;

@Controller
public class RssController {

    @RequestMapping(value="/rssfeed", method = RequestMethod.GET)
    public ModelAndView getFeedInRss() {

        List items = new ArrayList();

        SampleContent content  = new SampleContent();
        content.setTitle("Spring MVC Tutorial 1");
        content.setUrl("http://www.example.com/spring-mvc/tutorial-1");
        content.setSummary("Tutorial 1 summary ...");
        content.setCreatedDate(new Date());
        items.add(content);

        SampleContent content2  = new SampleContent();
        content2.setTitle("Spring MVC Tutorial 2");
        content2.setUrl("http://www.example.com/spring-mvc/tutorial-2");
        content2.setSummary("Tutorial 2 summary ...");
        content2.setCreatedDate(new Date());
        items.add(content2);

        ModelAndView mav = new ModelAndView();
        mav.setViewName("rssViewer");
        mav.addObject("feedContent", items);

        return mav;

    }

}

6. Enregistrement des haricots de printemps

Dans un fichier de définition Spring bean, activez l'analyse automatique des composants et enregistrez votre classe «CustomRssViewer» et votre résolveur de vue «BeanNameViewResolver», de sorte que lorsque le nom de la vue «rssViewer» est renvoyé, Spring sait qu'il doit correspondre à l'ID de haricot «rssViewer».

Fichier: mvc-dispatcher-servlet.xml



    

    
    

    

Note
Le contenu du fichier deweb.xml est omis, juste une configuration standard, si cela vous intéresse, téléchargez tout ce projet à la fin de l'article.

7. Demo

spring mvc and rss feed demo

How about Atom?
Pour Atom, il vous suffit d'étendreAbstractAtomFeedView, au lieu deAbstractRssFeedView.

Télécharger le code source

Téléchargez-le -SpringMVC-RSS-Feed-Example.zip (9 Ko)