Outils pour utilisateurs

Outils du site


developpement:java:servlets

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
developpement:java:servlets [2016/09/14 03:26] sgariepydeveloppement:java:servlets [2023/10/03 23:14] (Version actuelle) sgariepy
Ligne 7: Ligne 7:
 Le conteneur web doit respecter les spécifications des servlets((Les spécifications des servlets sont publiées sur le site de Sun Microsystems consacré à Java : http://java.sun.com/products/servlet/)).  On ne déploie pas de servlet, on déploie une application web et la plus simple des application web est composé d'une servlet.  La servlet fait forcément partie d'une application web et l'application web fait partie d'un conteneur.  Un conteneur web est une application réseau qui respecte les spécifications de la norme JEE et ce processus est standardisé, c'est-à-dire que si votre servlet et application web fonctionne sur un conteneur web, ce dernier fonctionnera sur tous les autres conteneurs web. Le conteneur web doit respecter les spécifications des servlets((Les spécifications des servlets sont publiées sur le site de Sun Microsystems consacré à Java : http://java.sun.com/products/servlet/)).  On ne déploie pas de servlet, on déploie une application web et la plus simple des application web est composé d'une servlet.  La servlet fait forcément partie d'une application web et l'application web fait partie d'un conteneur.  Un conteneur web est une application réseau qui respecte les spécifications de la norme JEE et ce processus est standardisé, c'est-à-dire que si votre servlet et application web fonctionne sur un conteneur web, ce dernier fonctionnera sur tous les autres conteneurs web.
  
-Une application web est un ensemble de composants de deux types.  Il peut y avoir plusieurs servlet et plusieurs pages [[prog:java:jsp|JSP]] dans une application, ainsi qu'un [[#descripteur_de_deploiement|fichier de configuration]] et ces composants sont déployés dans un conteneur web.  Le conteneur fourni un environnement d'exécution, c'est-à-dire essentiellement une machine virtuelle et il gère aussi le cycle de vie de l'application.+Une application web est un ensemble de composants de deux types.  Il peut y avoir plusieurs servlet et plusieurs pages [[developpement:java:jsp|JSP]] dans une application, ainsi qu'un [[#descripteur_de_deploiement|fichier de configuration]] et ces composants sont déployés dans un conteneur web.  Le conteneur fourni un environnement d'exécution, c'est-à-dire essentiellement une machine virtuelle et il gère aussi le cycle de vie de l'application.
  
 {{  :developpement:java:3tiers_conteneurweb.jpeg  |}} {{  :developpement:java:3tiers_conteneurweb.jpeg  |}}
Ligne 45: Ligne 45:
  
  
-{{  :prog:java:javax_servlet.jpeg  |}}+{{  :developpement:java:javax_servlet.jpeg  |}}
  
 En [[web:tomcat:installation|installant Tomcat]], on peut trouver les classes nécessaires à la compilation.  En conséquence, on peut exporter le ''CLASSPATH'' pour que les classes Java puissent être compilées de partout : En [[web:tomcat:installation|installant Tomcat]], on peut trouver les classes nécessaires à la compilation.  En conséquence, on peut exporter le ''CLASSPATH'' pour que les classes Java puissent être compilées de partout :
Ligne 101: Ligne 101:
 </code> </code>
  
-Remarquons que la méthode ''doGet()'' reçoit un paramètre de type ''HttpServletRequest'' qui représente la requête HTTP qui a invoquée la servlet et un paramètre de type ''HttpServletResponse'' qui représente la réponse de la servlet.  Dans l'exemple de la servlet ''TestServlet'', la méthode ''doGet()'' utilise la méthode ''getWriter()'' de ce deuxième paramètre pour obtenir un flux de sortie de type ''PrintWriter'' Ce flux est dirigé vers le client et permet de lui envoyer des réponses textuelles (au format [[web:html|HTML]] ou [[prog:general:xml|XML]]).+Remarquons que la méthode ''doGet()'' reçoit un paramètre de type ''HttpServletRequest'' qui représente la requête HTTP qui a invoquée la servlet et un paramètre de type ''HttpServletResponse'' qui représente la réponse de la servlet.  Dans l'exemple de la servlet ''TestServlet'', la méthode ''doGet()'' utilise la méthode ''getWriter()'' de ce deuxième paramètre pour obtenir un flux de sortie de type ''PrintWriter'' Ce flux est dirigé vers le client et permet de lui envoyer des réponses textuelles (au format [[web:html5:toc|HTML]] ou [[developpement:general:xml|XML]]).
  
 {{:web:tomcat:testservlet.jpg|Figure 2. La servlet TestServlet envoie un message de bienvenue à l'utilisateur.}} {{:web:tomcat:testservlet.jpg|Figure 2. La servlet TestServlet envoie un message de bienvenue à l'utilisateur.}}
Ligne 120: Ligne 120:
 </html> </html>
 </code> </code>
-{{:prog:java:test_bienvenue.jpg|figure 3. Formulaire HTML où le client peut saisir son nom.}}+ 
 +{{:developpement:java:test_bienvenue.jpg|figure 3. Formulaire HTML où le client peut saisir son nom.}}
  
 En cliquant sur le bouton **OK**, les données du formulaire sont envoyées à la servlet ''TestServlet'' Cette dernière va pouvoir récupérer le nom contenu dans le champ ''name'' Elle va pour cela utiliser la méthode ''getParameter()'' de l'argument ''request'' de la méthode ''doGet()'' Ce paramètre représente la requête du client et encapsule toutes les informations sur cette requête : En cliquant sur le bouton **OK**, les données du formulaire sont envoyées à la servlet ''TestServlet'' Cette dernière va pouvoir récupérer le nom contenu dans le champ ''name'' Elle va pour cela utiliser la méthode ''getParameter()'' de l'argument ''request'' de la méthode ''doGet()'' Ce paramètre représente la requête du client et encapsule toutes les informations sur cette requête :
Ligne 200: Ligne 201:
 ===== Descripteur de déploiement ===== ===== Descripteur de déploiement =====
  
-Les descripteurs de déploiement font partie intégrante des applications web J2EE.  Ils permettent de gérer la configuration des applications web après leur déploiement.  Pour les conteneurs web, un descripteur de déploiement est un fichier [[prog:general:xml|XML]] de nom ''web.xml'' stocké dans le dossier ''WEB-INF'', sous-dossier du dossier principal de l'application.+Les descripteurs de déploiement font partie intégrante des applications web J2EE.  Ils permettent de gérer la configuration des applications web après leur déploiement.  Pour les conteneurs web, un descripteur de déploiement est un fichier [[developpement:general:xml|XML]] de nom ''web.xml'' stocké dans le dossier ''WEB-INF'', sous-dossier du dossier principal de l'application.
  
 La DTD (//Document Type Definition//) pour le descripteur de déploiement est fournie par la spécification des servlets((Par exemple, pour la version 2.3 des spécifications des servlets, la DTD se trouve à: http://java.sun.com/dtd/web-app_2_3.dtd)). La DTD (//Document Type Definition//) pour le descripteur de déploiement est fournie par la spécification des servlets((Par exemple, pour la version 2.3 des spécifications des servlets, la DTD se trouve à: http://java.sun.com/dtd/web-app_2_3.dtd)).
Ligne 206: Ligne 207:
 Le descripteur de déploiement joue plusieurs rôles : Le descripteur de déploiement joue plusieurs rôles :
   * Initialisation des paramètres pour servlets et applications : ça permet de minimiser les initialisations dans le code (//hardcodées//).  Par exemple, si une servlet nécessite des accès à une base de données, le meilleur endroit pour placer les détails sur cette base de données (URL de la base de donnée et chaîne de pilote) est le descripteur de déploiement.  On pourra ainsi changer la configuration de la base de données sans avoir à recompiler la servlet.   * Initialisation des paramètres pour servlets et applications : ça permet de minimiser les initialisations dans le code (//hardcodées//).  Par exemple, si une servlet nécessite des accès à une base de données, le meilleur endroit pour placer les détails sur cette base de données (URL de la base de donnée et chaîne de pilote) est le descripteur de déploiement.  On pourra ainsi changer la configuration de la base de données sans avoir à recompiler la servlet.
-  * Définition des servlets/JSP : chaque page [[prog:java:jsp|JSP]] ou servlet doit être définie dans le descripteur de déploiement.  Pour une servlet, cette définition inclut le nom, la classe et une éventuelle description. +  * Définition des servlets/JSP : chaque page [[developpement:java:jsp|JSP]] ou servlet doit être définie dans le descripteur de déploiement.  Pour une servlet, cette définition inclut le nom, la classe et une éventuelle description. 
-  * Mappings pour JSP/servlets : le conteneur web utilise ces informations pour << mapper >> les requêtes vers les pages [[prog:java:jsp|JSP]] et servlets.+  * Mappings pour JSP/servlets : le conteneur web utilise ces informations pour << mapper >> les requêtes vers les pages [[developpement:java:jsp|JSP]] et servlets.
   * Types MIME : une application web peut contenir différents types de contenu.  Pour chacun d'eux, on spécifie le type MIME correspondant dans le descripteur de déploiement.   * Types MIME : une application web peut contenir différents types de contenu.  Pour chacun d'eux, on spécifie le type MIME correspondant dans le descripteur de déploiement.
   * Sécurité : gère le contrôle d'accès à l'application.  Il permet, en particulier, d'indiquer quelle page de //login// utiliser si l'application nécessite que l'utilisateur se connecte.   * Sécurité : gère le contrôle d'accès à l'application.  Il permet, en particulier, d'indiquer quelle page de //login// utiliser si l'application nécessite que l'utilisateur se connecte.
Ligne 374: Ligne 375:
  
 Il existe des situations où une servlet ne peut pas répondre seule à une requête.  Deux situations peuvent se présenter : Il existe des situations où une servlet ne peut pas répondre seule à une requête.  Deux situations peuvent se présenter :
-  * Redirection (''forward'') -> La servlet effectue une partie du traitement et la transmet à une autre ressource.  Elle peut par exemple traiter une partie de la requête puis la transférer à une autre servlet pour la compléter.  Elle peut aussi s'occuper de la logique d'affaire puis transmettre la requête à une page [[prog:java:jsp|JSP]] qui va s'occuper de la présentation de la réponse au client.+  * Redirection (''forward'') -> La servlet effectue une partie du traitement et la transmet à une autre ressource.  Elle peut par exemple traiter une partie de la requête puis la transférer à une autre servlet pour la compléter.  Elle peut aussi s'occuper de la logique d'affaire puis transmettre la requête à une page [[developpement:java:jsp|JSP]] qui va s'occuper de la présentation de la réponse au client.
   * Inclusion (''include'') -> la servlet peut inclure le traitement effectué par une autre ressource dans son propre traitement.   * Inclusion (''include'') -> la servlet peut inclure le traitement effectué par une autre ressource dans son propre traitement.
  
developpement/java/servlets.1473816389.txt.gz · Dernière modification : 2022/02/02 00:43 (modification externe)