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.

  • ๐Ÿงฑ Sรฉparation des prรฉoccupations: Le modรจle contient les donnรฉes et la logique mรฉtier, la vue affiche l'interface utilisateur et le contrรดleur achemine les requรชtes entre eux.
  • (I.e. Rรดle JSP : Les pages JSP gรฉnรจrent un balisage dynamique pour la couche Vue tandis qu'un servlet gรจre le traitement des requรชtes au niveau de la couche Contrรดleur.
  • ๐Ÿ”€ Flux de requรชtes : Le navigateur soumet un formulaire, le servlet valide les entrรฉes et remplit un champ. JavaLe bean transmet ensuite le contrรดle ร  une vue JSP pour obtenir une rรฉponse.
  • โœ… Victoires en matiรจre de maintenabilitรฉ : L'architecture MVC en JSP facilite la maintenance, l'extension, les tests unitaires et la navigation centralisรฉe des applications web.
  • ๐Ÿงช Exemple de travail : Un formulaire de connexion envoie des donnรฉes ร  Mvc_servlet, qui stocke l'adresse e-mail et le mot de passe dans TestBean, puis les transmet ร  mvc_success.jsp.
  • ๐Ÿค– Modernisation de l'IA : Les assistants IA aident dรฉsormais ร  remanier le code JSP MVC existant en Spring MVC, en gรฉnรฉrant des contrรดleurs, des DTO et des tests ร  la demande.

MVC dans JSP (Architecture)

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 :

MVC Architecture
MVC Archidiagramme de structure

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 :

Conception d'applications JSP

Aprรจs avoir cliquรฉ sur Soumettre, le rรฉsultat s'affiche comme ci-dessous :

Conception d'applications JSP

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.

FAQ

MVC en JSP est un modรจle de conception qui divise une application Web en trois couches : Modรจle (donnรฉes et logique mรฉtier), Vue (pages JSP qui affichent lโ€™interface utilisateur) et Contrรดleur (un servlet qui traite les requรชtes et achemine les rรฉponses).

JSP appartient principalement ร  la couche Vue car elle gรฉnรจre du HTML dynamique pour l'utilisateur. Dans le modรจle JSP Model 2, une servlet joue le rรดle de contrรดleur. JavaLes haricots gรจrent le rรดle de modรจle, gardezping JSP sans logique mรฉtier.

Le modรจle 1 intรจgre directement la logique mรฉtier, l'accรจs aux donnรฉes et la prรฉsentation dans les pages JSP. Le modรจle 2 suit le modรจle MVC : une servlet fait office de contrรดleur. JavaLes beans constituent le modรจle, et les fichiers JSP gรฉnรจrent la vue. Le modรจle 2 est l'approche recommandรฉe.

L'architecture MVC amรฉliore la maintenabilitรฉ, la testabilitรฉ et la productivitรฉ des รฉquipes. Chaque couche รฉvolue indรฉpendamment, la logique mรฉtier reste en dehors des fichiers JSP, la navigation est centralisรฉe dans le servlet et les tests unitaires couvrent le modรจle sans nรฉcessiter de conteneur web.

Le navigateur soumet un formulaire ร  un servlet. Le servlet valide les donnรฉes saisies, crรฉe ou met ร  jour un JavaLe bean est stockรฉ comme attribut de requรชte. Il transmet ensuite le contrรดle ร  une page JSP, qui lit le bean et gรฉnรจre la rรฉponse.

Les assistants de codage IA analysent les fichiers Servlets et JSP existants, par exempletracIntรฉgrer la logique mรฉtier dans des services propres, gรฉnรฉrer des contrรดleurs Spring MVC et des DTO, et produire JUnit tests. Cela accรฉlรจre la migration du modรจle JSP 2 vers les frameworks modernes en rรฉduisant la rรฉรฉcriture manuelle.

Les outils d'IA crรฉent la structure des contrรดleurs Spring MVC et gรฉnรจrent une carte des requรชtes.pingIls permettent de gรฉnรฉrer des annotations de validation, de rรฉdiger des modรจles Thymeleaf et de crรฉer des tests d'intรฉgration. Ils dรฉtectent รฉgalement les problรจmes de sรฉcuritรฉ tels que l'absence de protection CSRF ou la gestion non sรฉcurisรฉe des entrรฉes dans les mรฉthodes du contrรดleur.

Rรฉsumez cet article avec :