Dans ce didacticiel, nous allons vous montrer une application Web Spring MVC hello world.
Technologies utilisées:
Printemps 2.5.6
JDK 1.6
Eclipse 3.6
Maven 3
1. MVC Basic
Dans l'application Web Spring MVC, il se compose de 3 composants MVC standard (modèle, vues, contrôleur):
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).
Vues - Affichez les données, normalement il s'agit d'une page JSP écrite avec la bibliothèque de balises standard Java (JSTL).
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.
Figure 1.2 - _L'image est copiée de ce livre:Spring Recipes_
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.
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.
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}.
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 Applicationmvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1mvc-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.
L'URL se termine par l'extension «.htm», elle sera donc redirigée vers «DispatcherServlet» et enverra des demandes au BeanNameUrlHandlerMapping par défaut.
BeanNameUrlHandlerMapping renvoie HelloWorldController au DispatcherServlet.
DispatcherServlet transmet la demande au HelloWorldController.
HelloWorldController le traite et renvoie un objet ModelAndView, avec le nom de vue «HelloWorldPage».
DispatcherServlet a reçu le ModelAndView et appelle le viewResolver pour le traiter.
viewResolver renvoie les/WEB-INF/pages/HelloWorldPage.jsp au DispatcherServlet.
DispatcherServlet renvoie le «HelloWorldPage.jsp» à l'utilisateur.