Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.86 KB | None | 0 0
  1. Modèle-vue-contrôleur ou MVC est un motif d'architecture logicielle destiné aux interfaces graphiques lancé en 1978 et très populaire pour les applications web. Le motif est composé de trois types de modules ayant trois responsabilités différentes :
  2. les modèles, les vues et les contrôleurs.
  3.  
  4. Servlet avec vue…
  5. Le modèle MVC nous conseille de placer tout ce qui touche à l'affichage final (texte, mise en forme, etc.) dans une couche à part : la vue. Nous avons rapidement survolé dans la première partie de ce cours comment ceci se concrétisait en Java EE : la technologie utilisée pour réaliser une vue est la page JSP. Nous allons dans ce chapitre découvrir comment fonctionne une telle page, et apprendre à en mettre une en place au sein de notre embryon d'application.
  6.  
  7. Introduction aux JSP
  8. À quoi ressemble une page JSP ?
  9.  
  10. C'est un document qui, à première vue, ressemble beaucoup à une page HTML, mais qui en réalité en diffère par plusieurs aspects :
  11.  
  12. l'extension d'une telle page devient .jsp et non plus .html ;
  13.  
  14. une telle page peut contenir des balises HTML, mais également des balises JSP qui appellent de manière transparente du code Java ;
  15.  
  16. contrairement à une page HTML statique directement renvoyée au client, une page JSP est exécutée côté serveur, et génère alors une page renvoyée au client.
  17.  
  18. L'intérêt est de rendre possible la création de pages dynamiques : puisqu'il y a une étape de génération sur le serveur, il devient possible de faire varier l'affichage et d’interagir avec l'utilisateur, en fonction notamment de la requête et des données reçues !
  19.  
  20. Bien que la syntaxe d'une page JSP soit très proche de celle d'une page HTML, il est théoriquement possible de générer n'importe quel type de format avec une page JSP : du HTML donc, mais tout aussi bien du CSS, du XML, du texte brut, etc. Dans notre cas, dans la très grande majorité des cas d'utilisation il s'agira de pages HTML destinées à l'affichage des données de l'application sur le navigateur du client.
  21.  
  22. Ne vous fiez pas au titre de ce sous-chapitre, nous n'allons pas pour le moment nous intéresser à la technologie JSP en elle-même, ceci faisant l'objet des chapitres suivants. Nous allons nous limiter à l'étude de ce qu'est une JSP, de la manière dont elle est interprétée par notre serveur et comment elle s'insère dans notre application.
  23.  
  24. Nature d'une JSP
  25. Quoi ?
  26. Les pages JSP sont une des technologies de la plate-forme Java EE les plus puissantes, simples à utiliser et à mettre en place. Elles se présentent sous la forme d'un simple fichier au format texte, contenant des balises respectant une syntaxe à part entière. Le langage JSP combine à la fois les technologies HTML, XML, servlet et JavaBeans (nous reviendrons sur ce terme plus tard, pour le moment retenez simplement que c'est un objet Java) en une seule solution permettant aux développeurs de créer des vues dynamiques.
  27.  
  28. Pourquoi ?
  29. Pour commencer, mettons noir sur blanc les raisons de l'existence de cette technologie.
  30.  
  31. La technologie servlet est trop difficile d'accès et ne convient pas à la génération du code de présentation : nous l'avons souligné en fin de chapitre précédent, écrire une page web en langage Java est horriblement pénible. Il est nécessaire de disposer d'une technologie qui joue le rôle de simplification de l'API servlet : les pages JSP sont en quelque sorte une abstraction "haut niveau" de la technologie servlet.
  32.  
  33. Le modèle MVC recommande une séparation nette entre le code de contrôle et la présentation. Il est théoriquement envisageable d'utiliser certaines servlets pour effectuer le contrôle, et d'autres pour effectuer l'affichage, mais nous rejoignons alors le point précédent : la servlet n'est pas adaptée à la prise en charge de l'affichage…
  34.  
  35. Le modèle MVC recommande une séparation nette entre le code métier et la présentation : dans le modèle on doit trouver le code Java responsable de la génération des éléments dynamiques, et dans la vue on doit simplement trouver l'interface utilisateur ! Ceci afin notamment de permettre aux développeurs et designers de travailler facilement sur la vue, sans avoir à y faire intervenir directement du code Java.
  36.  
  37. Comment ?
  38. On peut résumer la technologie JSP en une technologie offrant les capacités dynamiques des servlets tout en permettant une approche naturelle pour la création de contenus statiques. Ceci est rendu possible par :
  39.  
  40. un langage dédié : les pages JSP sont des documents au format texte, à l'opposé des classes Java que sont les servlets, qui décrivent indirectement comment traiter une requête et construire une réponse. Elles contiennent des balises qui combinent à la fois simplicité et puissance, via une syntaxe simple, semblable au HTML et donc aisément compréhensible par un humain ;
  41.  
  42. la simplicité d'accès aux objets Java : des balises du langage rendent l'utilisation directe d'objets au sein d'une page très aisée ;
  43.  
  44. des mécanismes permettant l'extension du langage utilisé au sein des pages JSP : il est possible de mettre en place des balises qui n'existent pas dans le langage JSP, afin d'augmenter les fonctionnalités accessibles. Pas de panique, ça paraît complexe a priori mais nous y reviendrons calmement dans la partie concernant la JSTL, et tout cela n'aura bientôt plus aucun secret pour vous ! ;)
  45.  
  46. Bon, assez gambergé ! Maintenant que nous avons une bonne idée de ce que sont les pages JSP, rentrons dans le concret en étudiant leur vie au sein d'une application !
  47.  
  48. //Premiere version du servlet
  49. package com.octest.servlets;
  50.  
  51. import java.io.IOException;
  52. import java.io.PrintWriter;
  53.  
  54. import javax.servlet.ServletException;
  55. import javax.servlet.annotation.WebServlet;
  56. import javax.servlet.http.HttpServlet;
  57. import javax.servlet.http.HttpServletRequest;
  58. import javax.servlet.http.HttpServletResponse;
  59.  
  60.  
  61. @WebServlet("/Test")
  62. public class Test extends HttpServlet {
  63.     private static final long serialVersionUID = 1L;
  64.        
  65.  
  66.     public Test() {
  67.         super();
  68.         // TODO Auto-generated constructor stub
  69.     }
  70.  
  71.  
  72.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  73.         response.setContentType("text/html");
  74.         response.setCharacterEncoding("UTF-8");
  75.        
  76.         PrintWriter out = response.getWriter();
  77.         out.println("<!DOCTYPE html>");
  78.         out.println("<html>");
  79.         out.println("<head>");
  80.         out.println("<meta charset=\"utf-8\" />");
  81.         out.println("<title>Test</title>");
  82.         out.println("</head>");
  83.         out.println("<body>");
  84.         out.println("<p>Bonjour !</p>");
  85.         out.println("</body>");
  86.         out.println("</html>");
  87.     }
  88.  
  89.  
  90.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  91.         // TODO Auto-generated method stub
  92.     }
  93.  
  94. }
  95. deuxieme versio ndu srevlet
  96.  
  97. package com.octest.servlets;
  98.  
  99. import java.io.IOException;
  100. import java.io.PrintWriter;
  101.  
  102. import javax.servlet.ServletException;
  103. import javax.servlet.annotation.WebServlet;
  104. import javax.servlet.http.HttpServlet;
  105. import javax.servlet.http.HttpServletRequest;
  106. import javax.servlet.http.HttpServletResponse;
  107.  
  108.  
  109. @WebServlet("/Test")
  110. public class Test extends HttpServlet {
  111.     private static final long serialVersionUID = 1L;
  112.        
  113.  
  114.     public Test() {
  115.         super();
  116.         // TODO Auto-generated constructor stub
  117.     }
  118.  
  119.  
  120.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  121.         this.getServletContext().getRequestDispatcher("/WEB-INF/bonjour.jsp").forward(request, response);
  122.     }
  123.  
  124.  
  125.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  126.         // TODO Auto-generated method stub
  127.     }
  128.  
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement