Un exemple MVC avec servlets et JSP

1. Vue d'ensemble

Dans cet article rapide, nous allons créer une petite application Web qui implémente le modèle de conception Model View Controller (MVC), à l'aide de servlets et de JSP de base.

Nous allons explorer un peu le fonctionnement de MVC et ses principales fonctionnalités avant de passer à l'implémentation.

2. Introduction à MVC

Model-View-Controller (MVC) est un modèle utilisé en génie logiciel pour séparer la logique d'application de l'interface utilisateur. Comme son nom l'indique, le modèle MVC comporte trois couches.

Le modèle définit la couche métier de l'application, le contrôleur gère le flux de l'application et la vue définit la couche de présentation de l'application.

Bien que le modèle MVC ne soit pas spécifique aux applications Web, il s'intègre très bien dans ce type d'applications. Dans un contexte Java, le modèle se compose de classes Java simples, le contrôleur se compose de servlets et la vue se compose de pages JSP.

Voici quelques caractéristiques clés du modèle:

  • Il sépare la couche présentation de la couche métier
  • Le contrôleur exécute l'action d'appeler le modèle et d'envoyer des données à View
  • Le modèle ne sait même pas qu'il est utilisé par une application Web ou une application de bureau

Jetons un coup d'œil à chaque couche.

2.1. Le calque modèle

Il s'agit de la couche de données qui contient la logique métier du système et qui représente également l'état de l'application.

Il est indépendant de la couche de présentation, le contrôleur récupère les données de la couche de modèle et les envoie à la couche de vue.

2.2. La couche contrôleur

La couche de contrôleur agit comme une interface entre la vue et le modèle. Il reçoit les requêtes de la couche View et les traite, y compris les validations nécessaires.

Les demandes sont ensuite envoyées à la couche modèle pour le traitement des données, et une fois qu'elles sont traitées, les données sont renvoyées au contrôleur puis affichées sur la vue.

2.3. La couche de vue

Cette couche représente la sortie de l'application, généralement une forme d'interface utilisateur. La couche de présentation est utilisée pour afficher les données du modèle récupérées par le contrôleur.

3. MVC avec servlets et JSP

Pour implémenter une application Web basée sur le modèle de conception MVC, nous allons créer les classes Student et StudentService - qui agiront comme notre couche de modèle.

La classe S tudentServlet agira en tant que contrôleur, et pour la couche de présentation, nous créerons la page student-record.jsp .

Maintenant, écrivons ces couches une par une et commençons par la classe Student :

public class Student { private int id; private String firstName; private String lastName; // constructors, getters and setters goes here } 

Écrivons maintenant notre StudentService qui traitera notre logique métier:

public class StudentService { public Optional getStudent(int id) { switch (id) { case 1: return Optional.of(new Student(1, "John", "Doe")); case 2: return Optional.of(new Student(2, "Jane", "Goodall")); case 3: return Optional.of(new Student(3, "Max", "Born")); default: return Optional.empty(); } } }

Créons maintenant notre classe de contrôleur StudentServlet :

@WebServlet( name = "StudentServlet", urlPatterns = "/student-record") public class StudentServlet extends HttpServlet { private StudentService studentService = new StudentService(); private void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String studentID = request.getParameter("id"); if (studentID != null) { int id = Integer.parseInt(studentID); studentService.getStudent(id) .ifPresent(s -> request.setAttribute("studentRecord", s)); } RequestDispatcher dispatcher = request.getRequestDispatcher( "/WEB-INF/jsp/student-record.jsp"); dispatcher.forward(request, response); } @Override protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }

Ce servlet est le contrôleur de notre application Web.

Tout d'abord, il lit un identifiant de paramètre à partir de la demande. Si l' ID est soumis, un objet Student est extrait de la couche de gestion.

Une fois qu'il a récupéré les données nécessaires du modèle, il place ces données dans la requête à l'aide de la méthode setAttribute () .

Enfin, le contrôleur transmet les objets de requête et de réponse à une JSP, la vue de l'application.

Ensuite, écrivons notre couche de présentation student-record.jsp :

  Student Record ID: First Name: Last Name: 

Et, bien sûr, le JSP est la vue de l'application; il reçoit toutes les informations dont il a besoin du contrôleur, il n'a pas besoin d'interagir directement avec la couche métier.

4. Conclusion

Dans ce didacticiel, nous avons découvert l'architecture MVC ie Model View Controller, et nous nous sommes concentrés sur la façon d'implémenter un exemple simple.

Comme d'habitude, le code présenté ici se trouve à l'adresse over sur GitHub.