1 Introduction
Qu'est-ce que le cadre MVC
Le nom complet de MVC est le contrôleur de vue du modèle, qui est l'abréviation de modèle-visual-contrôleur. Il s'agit d'un modèle de conception de logiciels. Il organise le code à l'aide d'une méthode de séparation de la logique métier, des données et de l'affichage de l'interface, et rassemble la logique métier dans un composant. Tout en améliorant et en personnalisant l'interface et l'interaction utilisateur, il n'est pas nécessaire de réécrire la logique métier. MVC a été développé uniquement pour cartographier les fonctions traditionnelles d'entrée, de traitement et de sortie dans une structure d'interface utilisateur graphique logique.
Model-View-Controller (MVC) est un modèle de conception bien connu basé sur des applications d'interface de conception. Il découple principalement la logique commerciale de l'interface en séparant le rôle des modèles, des vues et des contrôleurs dans les applications. En règle générale, le modèle est responsable de l'encapsulation des données d'application dans la couche de vue. La vue affiche uniquement ces données et ne contient aucune logique métier. Le contrôleur est responsable de la réception des demandes des utilisateurs et de l'appel des services de fond (Manager ou DAO) pour gérer la logique métier. Après traitement, la couche commerciale d'arrière-plan peut renvoyer certaines données à afficher dans la couche de vue. Le contrôleur collecte ces données et prépare le modèle à afficher dans la couche de vue. L'idée principale du modèle MVC est de séparer la logique métier de l'interface, leur permettant de changer individuellement sans s'affecter.
Dans les applications SpringMVC, le modèle est généralement composé d'objets PoJO, qui sont traités dans la couche commerciale et persistaient dans la couche de persistance. Les vues sont généralement des modèles JSP écrits dans la bibliothèque de balises standard JSP (JSTL). La partie du contrôleur est gérée par Dispatcherservlet, et nous en apprendrons plus dans ce tutoriel.
Certains développeurs pensent que les classes de couche commerciale et DAO font partie des composants du modèle MVC. J'ai des opinions différentes à ce sujet. Je ne pense pas que la couche commerciale et les classes de couche DAO fassent partie du cadre MVC. Habituellement, une application Web est une architecture à trois couches, à savoir la représentation de services de données. MVC fait en fait partie de la couche de présentation.
Servlet de répartiteur (contrôleur de ressort)
Dans l'application Spring MVC la plus simple, le contrôleur est le seul servlet que vous devez configurer dans le fichier de description du déploiement Web Java (c'est-à-dire le fichier web.xml). Contrôleur Spring MVC - communément appelé Servlet Dispatcher, implémente le modèle de conception du contrôleur frontal. Et chaque demande Web doit passer par le passage afin qu'elle puisse gérer l'intégralité du cycle de vie de la demande.
Lorsqu'une demande Web est envoyée à une demande Spring MVC, le servlet de répartiteur reçoit d'abord la demande. Il organise ensuite des composants configurés dans le contexte de l'application Web Spring (tels que le contrôleur de traitement de demande réel et le résolveur de vue) ou en utilisant la configuration d'annotation, qui nécessitent tous le traitement de la demande.
Définissez une classe de contrôleur dans Spring 3.0, qui doit être marquée avec l'annotation @Controller. Lorsqu'un contrôleur avec @Controller Annotation reçoit une demande, il recherchera une méthode de gestionnaire appropriée pour gérer la demande. Cela nécessite que le contrôleur mappe chaque demande à la méthode du gestionnaire via un ou plusieurs mappages de gestionnaires. Pour ce faire, les méthodes d'une classe de contrôleur doivent être décorées avec une annotation @Requestmapping pour en faire des méthodes de gestionnaire.
Une fois que la méthode du gestionnaire a traité la demande, il délègue le contrôle à une vue avec le même nom de vue que la valeur de retour de la méthode du gestionnaire. Pour fournir une méthode flexible, la valeur de retour d'une méthode de gestionnaire ne représente pas l'implémentation d'une vue mais une vue logique, c'est-à-dire qu'il n'y a pas d'extension de fichier. Vous pouvez cartographier ces vues logiques dans l'implémentation correcte et écrire ces implémentations dans le fichier de contexte afin que vous puissiez facilement modifier le code de couche de vue sans même modifier le code qui demande la classe de gestionnaire.
Il est de la responsabilité du résolveur de vue de faire correspondre le fichier correct pour un nom logique. Une fois que la classe de contrôleur a analysé un nom de vue dans une implémentation de vue. Il rend l'objet correspondant en fonction de la conception implémentée par la vue.
2 Pack d'importation
Au moins, il devrait y en avoir.
3 fichiers de configuration
3.1 web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" XSI: ScheMalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "webapp_id =" 3.0 " <splay-name> SpringMvc_Helloworld </ Display-Name> <Lelay-File-List> <Lelaen-File> index.html </venke-file> <leen welcome-file> index.htm </ welcome-file> <ven welcome-file> <Lelcome-File> Default.jsp </ Welcome-File> </ Welcome-File-List> <! - Servlet pour Spring MVC -> <! - Après initialisation, DispatcherServlet recherchera directement le fichier Springmvc-servlet.xml sous / web-inf /. La définition du paramètre de la balise de nom de servlet doit correspondre au fichier XML -> <Servlet> <Servlet-Name> Springmvc </Servlet-Name> <Serplet-Class> org.springFramework.web.servlet.dispatcherServlet </ Servlet-Class> <ony-startup> 1 </doftart-on-startup> </vrlett> <fer servlet> <Vertlet-Name> SpringMvc </ Servlet-Name> <Url-Pattern> / </ url-Pattern> </ Servlet-Mapping> <Touteft-Param> <Am param-Name> ContextConfiglocation </ Param-Name> <Amvin-Value> ClassPath: ApplicationContex <écouteur-classe> org.springframework.web.context.contextLoaderListener </ écouteur-class> </diner> </ web-app>
3.2 Springmvc-Servlet.xml
Le nom de ce fichier est déterminé par le <Servlet-Name> </vrlet-name> du Dispatcherservlet configuré dans web.xml. Le chemin est dans le contexte / web-inf /, qui configure principalement la relation correspondante entre le nom de vue logique et la vue physique renvoyée par le contrôleur.
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: context = "http://www.springframeworkwork.org/schema/context" XSI: ScheMalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsddwork. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <! - Package automatiquement scanné -> <context: composant-scan-package =" com.lin.Helloworld.ConTroller "/ Bean id = "ViewResolver"> <propriété name = "ViewClass" value = "org.springframework.web.servlet.view.jstlview" /> <! - Le contrôleur renvoie un nom de vue logique après le traitement de pré-pousse </bEAN> </EANS>
4 Écrivez une classe de domaine
Utilisé pour encapsuler certaines données de soumission
package com.lin.heloworld.domain; public class helloworld {private String data; public helloworld () {super ();} public helloworld (string data) {super (); this.data = data;} public string getData () {return data "Helloworld [data =" + data + "]";}} 5 Contrôleur d'écriture
Ceci est le contrôleur de MVC. Ce qui est différent de Struts2, c'est qu'il s'agit d'une interception au niveau de la méthode, et Struts2 est une interception au niveau de la classe.
Package com.lin.helloworld.controller; import org.springframework.sterreotype.controller; import org.springframework.web.bind.annotation.modelattribute; import org.springframework.web.bind.anotation.requestmapping; import org.springframeworkwork.web.servert.ModMapprent; Import Org.spring com.lin.helloworld.domain.heloworld; @ControllerPublic class helloworldController {// ici / Hello est équivalent à une action dans Struts2 // Renvoie une chaîne à la vue @RequestMapping ("/ Hello") ModelAndView Sayshello () {// Le premier paramètre du ModelandView Constructeur est équivalent pour un résultat dans le résultat dans STRUTS2 NAMETER ModelandView = new ModelandView ("Helloworld", "msg", "helloworld !!!"); return ModelAndView;} // renvoyer un objet à la vue // @ modelAttribute ("OBJ") est équivalent à un champ dans la classe d'action de Struts2, // Les données utilisées pour la soumission de formulaire sont mises dans un objet // la différence entre ici et Struts2: // Strut2 Formes: name = "obj.data" // Les données soumises sont encapsulées dans les données de l'objet OBJ // Springmvc est: <entrée name = "data" // Les données soumises sont encapsulées dans les données de l'objet OBJ, // la prémisse est à utiliser @ModelAttribute Annotation @requestmapping ("/ helloobj") public ModelView Saywelloworld (@ModaLatTrut ("/ hellooBj") ModelView Saywelloworld (@ModaLatTrut ("/ hellooBj") Public ModelVive HELLOWORLD OBJ) {System.out.println (obj.toString ()); ModelandView ModelAndView = new ModelAndView ("Helloworld", "Obj", obj); return ModelandView;}}6 vues
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServer () + path + "/";% "- // w3c // dtd html 4.01 transitional // en"> <html> <adref> <base href = "<% = basepath%>" rel = "external nofollow"> <ititle> mon jsp 'helloworld.jsp' daraming page </-caache "> <méta http-equie http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "Styles.css" rel = "externe nofollow"> -> </ head> <body> helloworld! Ceci est un exemple de framework Spring MVC. <br> $ {msg} <hr /> <form action = "helloobj" méthode = "post"> <! - La soumission de formulaire ici est différente de Struts2. Name = "data" correspondra automatiquement au fichier de l'objet -> <input type = "text" name = "data" size = "30" /> <br/> <input type = "soume" value = "soumed" /> </ form> <hr /> $ {obj.data} </ body> </ html>7 Structure du répertoire
Résumer
Ce qui précède est tout au sujet de l'exemple d'entrée de SpringMVC dans cet article, j'espère que cela sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à ce site:
Java Programming Implémentation de SpringMVC Simple Login Exemple
La programmation SpringMVC utilise l'interface du contrôleur pour implémenter le code d'instance du contrôleur
Explication détaillée pour savoir si l'intercepteur SpringMVC implémente la session de surveillance
S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien à ce site.