d3:a02

Ceci est une ancienne révision du document !


D3-A02 : Créer un premier projet Jakarta EE

  • Menu File > New Project.
  • Sélectionner Maven > Web Application.
  • Donner un nom au projet (Test1Jakarta).
  • Enregistrer votre projet dans le dossier NetBeansProjects
  • Sélectionner Payara Server comme serveur cible.
  • Choisir Jakarta EE 9.1 ou 10 comme plateforme.
  • Cliquer sur Finish.

Apache Maven (couramment appelé Maven) est un outil de gestion et d'automatisation de production des projets logiciels Java en général et Jakarta EE en particulier. Il est utilisé pour automatiser l'intégration continue lors d'un développement de logiciel. Lors de la création de projets, Maven a besoin d'avoir accès à des dépôts distants, il doit donc pouvoir passer le proxy du lycée. Pour cela il faut apporter des modifications dans le fichier de configuration de Maven (faire une copie settings.old.xml au préalable)

C:\Program Files\Apache NetBeans\java\maven\conf\settings.xml
<proxies>
    <proxy>
      <id>proxy-http</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>10.121.38.1</host>
      <port>8080</port>
      <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
    </proxy>
    <proxy>
      <id>proxy-https</id>
      <active>true</active>
      <protocol>https</protocol>
      <host>10.121.38.1</host>
      <port>8080</port>
      <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
    </proxy>
  </proxies>

Redémarrer Netbeans et votre ordinateur si besoin pour prendre en compte le changement de configuration.

  1. Cliquer droit sur ton projet → Run.(Attention au JDK !)
  2. NetBeans compile et déploie l’application (.war) sur Payara.
  3. Ouvrir le navigateur et aller sur : http://localhost:8080/Test1Jakarta/ → une page “Hello Word” s'affiche, c’est le fichier index.html qui est exécuté, vous pouvez le changer et constater sa mise à jour

Jalon1 : “Hello Word” s'affiche

Notre application Test1Jakarta comprend notamment :

  • le dossier Web Pages, où seront stockés les vues (JSP), les script javascript et les feuilles de styles.
  • le dossier Source Packages contiendra les classes Java (les servlets)

Le serveur web place chaque requête reçue dans un objet de type HttpServletRequest et initialise une réponse dans un objet de type HttpServletResponse.

Dans le modèle MVC, toute requête de la part d'un client doit, dans un premier temps, passer par la servlet qui décide de la réponse à donner.

Le rôle de la servlet est donc d'intercepter les requêtes HTTP, de les traiter et de gérer la réponse (grâce aux objets de type HttpServletRequest et HttpServletResponse).

Il existe principalement 2 types de requête HTTP :

  • les requêtes de type GET : le client utilise cette méthode pour demander une ressource web au serveur via une URL.
  • les requêtes de type POST : le client utilise cette méthode s'il souhaite que les données (saisies dans un formulaire par exemple) qu'il communique au serveur soient présentes au niveau du corps de la requête.

La servlet devra disposer de méthodes permettant de traiter ces 2 types de requêtes.

Jakarta EE dispose du package servlet dans lequel on retrouvera notamment la classe interface Servlet, et également la classe abstraite HttpServlet qui implémente cette interface. La classe HttpServlet dispose notamment des méthodes abstraites doGet et doPost.

Note:

  • Classe interface : classe abstraite décrivant des comportements qui seront développés dans les classes qui l'implémentent.
  • Classe abstraite : classe qui ne peut être instanciée, mais qui peut disposer de méthodes abstraites qui devront être redéfinies dans ses classes filles.
Notre servlet devra héritée de la classe HttpServlet, et devra donc redéfinir les méthodes doGet et doPost.

Note: Bonne nouvelle : NetBeans s'occupe de (presque) tout !

Il faut dans un premier temps créer une classe de type Servlet qui sera chargée de traiter les requêtes arrivant au serveur et de préparer la réponse. Nous travaillons toujours à partir du projet Test1Jakarta.

  1. Au niveau de NetBeans, à partir du projet Test1Jakarta : clic droit sur Source Packages puis choisir New et Servlet
  2. Appeler cette classe Test1Servlet et préciser le nom du package : com.test.servlets, clic sur 'Next'.
  3. Au niveau de l'écran “Configure Servlet Deployment”, cocher “Add information to deployment descriptor (web.xml)”, dans “URL Pattern” préciser : /PremierTest, puis clic sur 'Finish'.

NetBeans a généré automatiquement la classe Test1Servlet qui hérite de la classe HttpServlet.

  1. Regarder le contenu de la classe Test1Servlet (Test1Servlet.java) générée
  2. Vérifier la présence des méthodes doGet et doPost

Il faut ensuite préciser à l'application que la servlet existe(donner son nom), et le chemin permettant d'y accéder. Ceci est effectué par le biais d'annotations @WebServlet

Dans la classe Test1Servlet, mettre l’annotation juste avant la déclaration de la classe: @WebServlet(name = “Test1Servlet”, urlPatterns = {“/PremierTest”}) et importer le package jakarta.servlet.annotation.WebServlet si besoin.

package com.test.servlets;
 
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
 
/**
 *
 * @author dthev
 */
@WebServlet(name = "Test1Servlet", urlPatterns = {"/PremierTest"});
 
public class Test1Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       //
    }
}

Dans ce fichier, 2 parties sont importantes :

  1. le package qui gère la servlet
  2. l'annotation @WebServlet permet de faire correspondre la servlet nommée au niveau de la partie précédente (Test1Servlet) avec une adresse url accessible depuis le poste client(url-pattern). Ainsi, le poste client devra indiquer : http://localhost:8080/Test1Jakarta/PremierTest

Remarque : Si on ne voulait pas que l'utilisateur précise PremierTest, il suffisait d'indiquer le caractère / entre les balises <url-pattern> et</url-pattern>

  • Vérifier le contenu du fichier web.xml :
  • Sauvegarder
  • Tester depuis le navigateur (recompiler si besoin, attention au JDK):
  • Le message suivant doit s'afficher : Servlet Test1Servlet at /Test1Jakarta

Jalon2 : “Servlet Test1Servlet at /Test1Jakarta” s'affiche

Actuellement, la page affichée est créée au niveau de la méthode processRequest de la classe Test1Servlet à l'aide des instructions out.printl(“…”). La méthode processRequest est appelée par les méthodes doGet (sollicitée en cas de requête de type GET) et doPOST (sollicitée en cas de requête de type POST).

Le poste client communique uniquement avec la couche contrôleur (comprenant la servlet) : il lui envoie une requête de type GET, et la servlet lui retourne la réponse.

Or dans le modèle MVC, la partie réponse doit être gérée au niveau de la couche Vue.

Le modèle MVC indique que la création des pages web retournées au poste client doit être effectuée au niveau de la couche Vue. En Java, une vue est une page JSP. Elle ne doit pas être accessible directement depuis le navigateur, celui-ci doit s'adresser uniquement au contrôleur (la servlet) qui demandera à la couche Vue d'envoyer la réponse voulue. La servlet est toujours le point d'entrée unique de l'application.

1. Qu'est-ce qu'une page JSP (Java Server Page) ?

C'est un document qui ressemble à une page html, avec quelques différences :

  • extension .jsp
  • elle peut contenir des balises spécifiques jsp qui permettent d'appeler du code Java
  • la page jsp génère une page html qui sera retournée au serveur

(Remarque : Similitude avec une page php)

2. Création d'une page JSP inaccessible directement depuis le poste client.

  1. Clic droit au niveau du répertoire WEB-INF du dossier Web Pages, puis New et JSP
  2. Appeler-la test1JSP, puis clic sur 'Finish'
  3. Modifier son contenu, par exemple :
<body>
  <h1>Ma première JSP</h1>
  <p>Elle n'est accessible que depuis le contrôleur, c'est à dire la servlet</p>
</body>
  1. Puis sauvegarder (recompiler si besoin, attention au JDK):
  2. Essayer d'y accéder directement en saisissant l'url suivante au niveau du navigateur : http://localhost:8080/Test1Jakarta/WEB-INF/test1JSP.jsp
  3. Le serveur a dû générer un rapport d'erreur (Erreur 404), l'accès à cette page doit s'effectuer depuis la servlet.

Jalon3 : la page d'erreur 404 s'affiche

Le navigateur du poste client doit appeler la servlet en saisissant cette url : http://localhost:8080/Test1Jakarta/PremierTest et la servlet (Test1Servlet) doit demander à la vue (page test1JSP.jsp) de générer et d'envoyer la page html au client.

Quand un navigateur demande à un serveur HTTP une ressource par le biais de l'adresse URL, il effectue une requête de type GET. Au niveau de notre servlet Test1Servlet, c'est la méthode doGet qui est chargée de prendre en charge les requêtes de type GET. Nous allons la modifier afin qu'elle sollicite l'exécution de notre vue test1JSP.jsp.

1. Apporter les modifications suivantes à la méthode doGet de la servlet Test1Servlet : Remplacer l'appel de la méthode processRequest par un appel à la vue.

  1. getServletContext() est une méthode retournant un objet de type ServletContext, cet objet dispose de méthodes utiles pour gérer la couche Contrôleur dans son rôle d'aiguilleur.
  2. getRequestDispatcheur(…) est une méthode retournant un objet de type RequestDispatcheur, c'est par cet objet que notre vue sera sollicitée.
  3. la méthode forward permet d'envoyer à la page jsp la requête initiale et l'initialisation de la réponse qui sera retournée au client.

Ces informations sont indispensables à la vue : elles lui permettent de connaître le contenu exact de la requête initiale avec les données attachées et de savoir les références du poste client à qui il faut retourner la réponse.

2. Sauvegarder et tester (recompiler si besoin, attention au JDK): saisir l'url suivante au niveau du navigateur : http://localhost:8080/Test1Jakarta/PremierTest La page suivante doit s'afficher :

Jalon4 : la première page s'affiche avec le bon message

A Savoir:

  1. Comment créer une servlet ?
  2. À quoi sert le fichier web.xml ?
  3. Quelles sont les 2 méthodes obligatoirement présentes dans une servlet ? Quand sont-elles exécutées ?
  4. Où doit-on créer une page JSP ?
  5. Que doit-on faire au niveau de la servlet pour qu'elle sollicite une page JSP ?

  • d3/a02.1757619676.txt.gz
  • Dernière modification : 2025/09/11 21:41
  • de dthevenot