Spring MVC hello world exemple

Spring MVC hello world example

Note
Ce tutoriel est basé sur Spring 2.5.6, assez obsolète. Essayez d'envisager les nouveaux didacticiels:

Dans ce didacticiel, nous allons vous montrer une application Web Spring MVC hello world.

Technologies utilisées:

  1. Printemps 2.5.6

  2. JDK 1.6

  3. Eclipse 3.6

  4. Maven 3

1. MVC Basic

Dans l'application Web Spring MVC, il se compose de 3 composants MVC standard (modèle, vues, contrôleur):

  1. Modèles - Objets de domaine traités par la couche de service (logique métier) ou la couche persistante (opération de base de données).

  2. Vues - Affichez les données, normalement il s'agit d'une page JSP écrite avec la bibliothèque de balises standard Java (JSTL).

  3. Contrôleurs - Mappage d'URL et interaction avec la couche de service pour le traitement des affaires et renvoyer un modèle.

Les figures suivantes montrent comment l'application Web Spring MVC gère une demande Web.

Figure 1.1 - L'image est copiée à partir deSpring MVC reference avec légèrement modifiée.

spring mvc concepts

Figure 1.2 - _L'image est copiée de ce livre:Spring Recipes_

spring-mvc-concepts-2

Note
Dans Spring MVC, le composant principal du répartiteur est leDispatcherServlet, qui agit comme contrôleur frontal (modèle de conception). Chaque requête Web doit passer par ceDispatcherServlet, et lesDispatcherServlet enverront la requête Web aux gestionnaires appropriés.

2. Structure du répertoire

Une structure de répertoire de projet Maven standard.

spring2-mvc-hello-world

3. Maven

Déclare la dépendancespring-webmvc, Maven vous aidera à gérer automatiquement les dépendances transitives (téléchargez les autres dépendances requises parspring-webmvc, commespring-context ouspring-beans).

Si vous utilisez la page JSP avec la technologie JSTL, incluez également la dépendancejstl.

pom.xml


    4.0.0
    com.example.common
    spring2-mvc-xml-hello-world
    war
    1.0-SNAPSHOT
    Spring 2 MVC

    
        1.6
        2.5.6
        1.2
        2.5

    

    

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

        
        
            javax.servlet
            jstl
            ${jstl.version}
        

        
        
            javax.servlet
            servlet-api
            ${servletapi.version}
            provided
        

    

    

      
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.3
            
                ${jdk.version}
                ${jdk.version}
            
        

                
        
            org.eclipse.jetty
            jetty-maven-plugin
            9.2.11.v20150529
            
                10
                
                    /spring2
                
            
        

                
        
            org.apache.maven.plugins
            maven-eclipse-plugin
            2.9
            
                true
                true
                2.0
                spring2
            
        

      

    

4. Contrôleur de printemps

Spring est livré avec de nombreux contrôleurs, normalement, il vous suffit d'étendre lesAbstractController et de remplacer la méthodehandleRequestInternal().

HelloWorldController.java

package com.example.common.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class HelloWorldController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        ModelAndView model = new ModelAndView("HelloWorldPage");
        model.addObject("msg", "hello world");

        return model;
    }
}

4.1 ModelAndView(“HelloWorldPage”) – To identify which view should return back to the user, in this example HelloWorldPage.jsp will be returned.

4.2 model.addObject(“msg”, “hello world”) – Add a “hello world” string into a model named “msg”, later you can use EL ${msg} to display the “hello world” string.

5. Afficher (page JSP)

Dans ce cas, "view" est une page JSP, vous pouvez afficher la valeur "hello world" qui est stockée dans le modèle "msg" via le langage d'expression (EL) $ {msg}.

HelloWorldPage.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


    

Spring MVC Hello World Example

${msg}

Note
Si $ {msg} est affiché tel quel, et non la valeur à l'intérieur du modèle «msg», cela peut être causé par l'ancien descripteur JSP 1.2, qui rend les langages d'expression désactivés par défaut , voir lessolution ici.

6. Configuration Spring XML

6.1 Declared the Spring Controller and viewResolver.

mvc-dispatcher-servlet.xml



    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

1. Controller - Déclaré un nom de bean/welcome.htm et le mapper àHelloWorldController. Cela signifie que si une URL avec le modèle/welcome.htm est demandée, le contrôleurHelloWorldController traitera la demande.

2. viewResolver - Définit comment Spring recherchera le modèle de vue. Dans ce cas, le contrôleurHelloWorldController retournera une vue nomméeHelloWorldPage, le viewResolver trouvera le fichier avec le mécanisme suivant:prefix + view name + suffix, qui est/WEB-INF/pages/HelloWorldPage.jsp.

Note
En fait, vous n'avez pas besoin de définir lesBeanNameUrlHandlerMapping dans lesweb.xml, par défaut, si aucun mappage de gestionnaire ne peut être trouvé, le DispatcherServlet créera unBeanNameUrlHandlerMapping automatiquement. Voir cet article -BeanNameUrlHandlerMapping example pour plus de détails.

6.2 In web.xml, declared a DispatcherServlet servlet to act as the front-controller to handle all the entire web request which end with htm extension.

web.xml



  Spring Web MVC Application

  
    mvc-dispatcher
        
             org.springframework.web.servlet.DispatcherServlet
        
        1
  

  
    mvc-dispatcher
        *.htm
  

Note
Lemvc-dispatcher est utilisé pour définir quel fichier charger les configurations XML Spring. Par défaut, il recherchera le fichier de configuration Spring XML en joignant le nom de servletmvc-dispatcher avec-servlet.xml.

Dans cet exemple, Spring recherchera ce fichier -mvc-dispatcher-servlet.xml.

7. Demo

7.1 To run this project with Maven :

$ mvn jetty:run

7.2 To run this project in Eclipse IDE, create Eclipse project settings with the following Maven command :

$ mvn eclipse:eclipse

Importe le projet manuellement et démarre avec le plugin serveur.

spring2-mvc-demo

Comment ça fonctionne?

  1. http://localhost:8080/spring2/welcome.htm est demandé.

  2. L'URL se termine par l'extension «.htm», elle sera donc redirigée vers «DispatcherServlet» et enverra des demandes au BeanNameUrlHandlerMapping par défaut.

  3. BeanNameUrlHandlerMapping renvoie HelloWorldController au DispatcherServlet.

  4. DispatcherServlet transmet la demande au HelloWorldController.

  5. HelloWorldController le traite et renvoie un objet ModelAndView, avec le nom de vue «HelloWorldPage».

  6. DispatcherServlet a reçu le ModelAndView et appelle le viewResolver pour le traiter.

  7. viewResolver renvoie les/WEB-INF/pages/HelloWorldPage.jsp au DispatcherServlet.

  8. DispatcherServlet renvoie le «HelloWorldPage.jsp» à l'utilisateur.

Télécharger le code source

Téléchargez-le -spring2-mvc-xml-hello-world.zip (14 Ko)