Spring 3 Beispiel für MVC und RSS-Feed

Spring 3 MVC und RSS Feed Beispiel

Im Frühjahr 3 wird eine abstrakte Klasse "AbstractRssFeedView" zum Generieren der RSS-Feed-Ansicht mit dem ROME-Paket von java.net geliefert. In diesem Tutorial zeigen wir Ihnen, wie Sie eine RSS-Feed-Ansicht aus dem Spring MVC-Framework generieren.

Verwendete Technologien:

  1. Spring 3.0.5.RELEASE

  2. ROM 1.0.0

  3. JDK 1.6

  4. Eclipse 3.6

  5. Maven 3

Wenn Sie am Ende des Tutorials diese URL -http://localhost:8080/SpringMVC/rest/rssfeed besuchen, gibt der Browser den folgenden RSS-Feed-Inhalt zurück:


  
    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. Verzeichnisaufbau

Überprüfen Sie die endgültige Projektstruktur.

directory structure

2. Projektabhängigkeiten

Deklariert für Maven die folgenden Abhängigkeiten inpom.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. Modell

Ein einfaches POJO, verwenden Sie dieses Objekt später, um den RSS-Feed-Inhalt zu generieren.

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

Das Erstellen einer Klasse erweitertAbstractRssFeedView und überschreibt die MethodenbuildFeedMetadata undbuildFeedItems. Der folgende Code sollte selbsterklärend sein.

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. Regler

Spring MVC-Controller-Klasse, generiere den RSS-Feed-Inhalt und gib einen Ansichtsnamen "rssViewer" zurück (Dieser Ansichtsname gehört zu "CustomRssViewer", wird später in Schritt 6 registriert).

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. Spring Bean Registrierung

Aktivieren Sie in einer Spring Bean-Definitionsdatei das automatische Scannen von Komponenten und registrieren Sie Ihre Ansichtsklasse "CustomRssViewer" und Ihren Ansichtsauflöser "BeanNameViewResolver", damit bei der Rückgabe des Ansichtsnamens "rssViewer" Folgendes zurückgegeben wird: Spring weiß, dass es der Bean-ID „rssViewer“ zugeordnet werden sollte.

Datei: mvc-dispatcher-servlet.xml



    

    
    

    

Note
Der Dateiinhalt vonweb.xml wird weggelassen. Nur eine Standardkonfiguration. Wenn Sie interessiert sind, laden Sie das gesamte Projekt am Ende des Artikels herunter.

7. Demo

spring mvc and rss feed demo

How about Atom?
Für Atom müssen Sie nurAbstractAtomFeedView anstelle vonAbstractRssFeedView erweitern.

Quellcode herunterladen

Laden Sie es herunter -SpringMVC-RSS-Feed-Example.zip (9 KB)