MVC dans JSP (Architecture)
⚡ Résumé intelligent
L'architecture MVC en JSP sépare les responsabilités de l'application en couches Modèle, Vue et Contrôleur, où JSP affiche la Vue, une Servlet fait office de Contrôleur, et JavaLes beans encapsulent le modèle pour des applications web propres, testables et maintenables.
Qu'est-ce que MVC?
MVC signifie Modèle-Vue-Contrôleur. Il s'agit d'un modèle de conception logicielle qui divise une application en trois couches interconnectées : la logique métier, la présentation et les données. En MVC :
- M signifie Modèle
- V signifie Vue
- C signifie Contrôleur
MVC est une méthode systématique de conception d'applications où le flux commence au niveau de la couche Vue. La requête est émise par l'utilisateur, traitée par la couche Contrôleur, puis envoyée à la couche Modèle pour insérer ou récupérer des données. Le Modèle renvoie ensuite une réponse (succès ou échec) que la Vue affiche à l'utilisateur. Le schéma d'architecture MVC est représenté ci-dessous :

Pourquoi utiliser MVC ? Archistructure dans JSP ?
Avant le sautping Pour comprendre le fonctionnement du modèle MVC en JSP, il est utile de saisir pourquoi les développeurs l'adoptent. Mélanger logique métier, requêtes de base de données et HTML au sein d'une même page JSP engendre rapidement un code spaghetti difficile à maintenir. Le modèle MVC remédie à ce problème en attribuant à chaque responsabilité sa propre couche :
- Code La lecture devient plus facile car chaque fichier a une responsabilité unique.
- Les équipes peuvent travailler en parallèle sur la vue, le contrôleur et le modèle sans conflit.
- Les tests unitaires ciblent directement le modèle, sans toucher au rendu JSP.
- Échangerping L'utilisation d'une vue JSP pour une réponse JSON ou un moteur de modèles différent est simple.
Comment fonctionne le modèle MVC en JSP
Dans une application MVC basée sur JSP, chaque couche correspond à un élément spécifique. Java technologie. Les fichiers JSP affichent la vue, un servlet fait office de contrôleur, et JavaLes beans encapsulent le modèle. Les sections ci-dessous expliquent les responsabilités de chaque couche.
Couche de modèle
- Il s'agit de la couche de données qui contient la logique métier du système.
- Elle contient toutes les données de l'application.
- Il représente également l'état de l'application.
- Il est construit à partir de JavaBeans ou POJOs qui se connectent à base de données.
- Le contrôleur communique avec le modèle pour récupérer les données et les transmet à la couche Vue.
- Le modèle se connecte à la base de données et y enregistre les données.
Afficher le calque
- Il s'agit de la couche de présentation de l'application.
- Il est composé de HTML, JSP, CSS et JavaScénario.
- Elle présente généralement l'interface utilisateur de l'application.
- Il affiche les données récupérées du contrôleur, qui à son tour récupère les données des classes de la couche Modèle.
- La couche Vue affiche les données sur l'interface utilisateur de l'application sans contenir de logique métier.
Couche de contrôleur
- Il agit comme une interface entre la vue et le modèle.
- Il intercepte toutes les requêtes provenant de la couche Vue.
- Il reçoit les requêtes de la couche Vue, les traite et effectue une validation sur la requête.
- La requête est transmise à la couche Modèle pour traitement des données. Une fois la requête traitée, le Modèle renvoie le résultat au Contrôleur avec les informations requises, que la Vue affiche ensuite.
Avantages de MVC Architecture
Les avantages de MVC sont :
- Facile à entretenir
- Facile à étendre
- Facile à tester
- Le contrôle de la navigation est centralisé
- Un faible couplage entre les couches rend la refactorisation plus sûre
- Le développement parallèle par plusieurs membres de l'équipe est possible
Exemple de conception d'application JSP avec MVC Architecture
Dans cet exemple, nous allons montrer comment utiliser l'architecture MVC dans une application JSP.
- Nous prenons l'exemple d'un formulaire avec deux variables, « email » et « password », qui représentent notre couche Vue.
- Une fois que l'utilisateur a saisi son adresse e-mail et son mot de passe et a cliqué sur Envoyer, l'action est transmise à Mvc_servlet où l'adresse e-mail et le mot de passe sont transmis.
- Mvc_servlet constitue la couche Contrôleur. Dans Mvc_servlet, la requête est envoyée à l'objet bean qui joue le rôle de la couche Modèle.
- Les valeurs de l'adresse e-mail et du mot de passe sont enregistrées dans le bean et stockées pour une utilisation ultérieure.
- La valeur est extraite du bean et affichée dans la couche Vue.
Mvc_example.jsp (Vue)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>MVC Guru Example</title> </head> <body> <form action="Mvc_servlet" method="POST"> Email: <input type="text" name="email"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
Explication du code :
Afficher le calque :
Code Ligne 10-15: Nous traitons ici un formulaire comportant deux champs en tant que paramètres : « email » et « password ». Cette requête doit être transmise à un contrôleur, Mvc_servlet.java, spécifié dans l’attribut action. La méthode HTTP utilisée est POST.
Mvc_servlet.java (Contrôleur)
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Mvc_servlet */ public class Mvc_servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Mvc_servlet() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String email=request.getParameter("email"); String password=request.getParameter("password"); TestBean testobj = new TestBean(); testobj.setEmail(email); testobj.setPassword(password); request.setAttribute("gurubean",testobj); RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp"); rd.forward(request, response); } }
Explication du code :
Couche de contrôle :
Code Ligne 14: Mvc_servlet étend HttpServlet.
Code Ligne 26: Comme la méthode utilisée est POST, la requête entre dans la méthode doPost du Servlet, qui traite la requête et l'enregistre dans l'objet bean sous le nom testobj.
Code Ligne 34: À l'aide de l'objet de requête, nous définissons l'attribut « gurubean » auquel est attribuée la valeur testobj.
Code Ligne 35: Nous utilisons ici l'objet RequestDispatcher pour transmettre le message de succès à mvc_success.jsp.
TestBean.java (Modèle)
package demotest; import java.io.Serializable; public class TestBean implements Serializable{ public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String email="null"; private String password="null"; }
Explication du code :
Couche de modèle :
Code Ligne 7-17: Il contient les accesseurs et les mutateurs de l'adresse e-mail et du mot de passe qui sont des membres de la classe TestBean.
Code Ligne 19-20: Elle définit l'adresse e-mail et le mot de passe des membres, de type chaîne de caractères, dans la classe bean.
Mvc_success.jsp (Vue de résultat)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="demotest.TestBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success</title> </head> <body> <% TestBean testguru=(TestBean)request.getAttribute("gurubean"); out.print("Welcome, "+testguru.getEmail()); %> </body> </html>
Explication du code :
Code Ligne 12: Nous récupérons l'attribut en utilisant l'objet de requête qui a été défini dans la méthode doPost du servlet.
Code Ligne 13: Nous imprimons le message de bienvenue et l'adresse e-mail qui ont été enregistrés dans l'objet bean.
Sortie
Lorsque vous exécutez le code ci-dessus, vous obtenez le résultat suivant :
Lorsque vous ouvrez mvc_example.jsp, vous obtenez le formulaire contenant les champs email et mot de passe ainsi que le bouton Soumettre.
Une fois que vous avez saisi votre adresse e-mail et votre mot de passe dans le formulaire et cliqué sur Envoyer :
Après avoir cliqué sur Soumettre, le résultat s'affiche comme ci-dessous :
Lorsque vous saisissez votre adresse e-mail et votre mot de passe à l'écran et que vous cliquez sur « Envoyer », ces informations sont enregistrées dans TestBean. Elles sont ensuite récupérées depuis TestBean et affichées sur l'écran suivant afin de confirmer l'opération. JSP joue le rôle de présentation des données et de fourniture de la vue, tandis que le servlet agit comme contrôleur et JavaLe bean sert de modèle. La logique métier principale est contenue dans la couche Modèle.



