Tuesday, December 16, 2014

SpringMVC



Dans le cas de SpringMVC le conteneur va servir à créer:

-Le contexte de l’application Web
-Les objets traitant les requêtes (Controller)
-Les objets créant les pages HTML (View)
-Les objets données des formulaires (Command)
-Les liens avec les couches métiers et BD
-Et pleins d’autres
-Le mapping des URL vers les contrôleurs
-Le mapping des vues , etc.

Voici le shéma qui montre intervention de spring MVC dans la couche présenation de l'application





En effet  spring mvc fonctionne par certains aspects de façon similaire à Struts : une servlet frontale va prendre l’ensemble des requêtes et les dispatcher à ses contrôleurs, ces contrôleurs sont des singletons issus d’une fabrique Spring.


Le Controller

La org.srinframework.web.servlet.DisatcherServlet est le point d’entrée générique qui délègue les requêtes à des Controller.

Un org.springframework.web.servlet.mvc.Controller prend en charge une requête, et utilise la couche métier pour y répondre.

Un Controller fabrique un modèle sous la forme d’une java.util.Map contenant les éléments de la réponse.

Un Controller choisit une org.springframework.web.servlet.View qui sera paramétrée par la Map pour donner la page qui sera affichée.  


web.xml 
Le fichier web.xml va contenir :
  1.        Une servlet pour dispatcher les requêtes aux contrôleurs.
  2.         Un mapping de servlet
On aboutit à ce fichier:

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
  <web-app>
 <display-name> Created Web Application</display-name>

on déclare la servlet frontale 

 <servlet>
 <servlet-name>spring-mvc-webapp</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
 </servlet>  

Toutes les requêtes se terminant par .html seront servis par la servlet frontal

<servlet-mapping>
 <servlet-name>spring-mvc-webapp</servlet-name>
 <url-pattern>*.html</url-pattern>
 </servlet-mapping>
  </web-app>
    
Dans un contexte Web avec Spring MVC, il faut comprendre qu'il y a en générale 2 contexte différents.

Le premier est créée par le ContextLoaderListener, et par défaut il va chercher un applicationContext.xml.Ce contexte est général à l'application et est chargé lors du démarrage de celle-ci.
Ensuite, tu as un contexte propre à la servlet, créé par la DispatcherServlet.
Si dans ton
mapping celle-ci porte le nom maservlet, alors elle cherchera un fichier maservlet-servlet.xml

Il faut editer le fichier de configuration de spring:
/WEB-INF/ maservlet-servlet.xml
Dans ce fichier on doit déclarer ceci:


Voici la structure du projet springmvc:




Dans le fichier xml de configuration,on doit ajouter la déaclaration du controller HelloWorldController comme suit:



 Voici la classe HelloWorldController  qui implemente le controller




       Nous allons ajouter une autre page pour afficher le résultat au lieux de PrintWriter  pour cela nous devons créer ModelAndView et lui passer le nom de model et sa valeur

ModelAndView(String viewName, String modelName, Object modelObject)


                        

Dans la page finale hello.jsp , on recupere la valuer envoye dans la variable txt.







No comments:

Post a Comment