Exercice 1 - Une première Servlet⚓︎
Maintenant que nous savons créer un projet Web, nous allons pouvoir créer des Servlets.
- Créer un nouveau projet, appelé
td2
, toujours avec l'archetype Mavenwebapp-jakartaee10
, et toujours dans le groupidfr.univtours.polytech
. - N'oubliez pas de de rajouter la balise
<finalName>
dans le 📄pom.xml
, avec la valeurtd2
. - Dans ce projet
td2
, aller dans le dossier 📂src/main/java
, qui va contenir toutes les sources. - Créer le package
fr.univtours.polytech.td2.servlet
(normalement, le packagefr.univtours.polytech.td2
a déjà été créé par Maven lors de la création du projet, il suffit donc de créer le sous-packageservlet
). -
Dans ce package, créer la classe :
MaPremiereServlet
.Remarque
Il est pratique d'indiquer ce qu'est la classe dans son nom, ici, une Servlet.
Créer une classe Java
Si la vue Java Projects n'est pas encore activée, il faut faire un clic droit sur le nom du dossier dans lequel créer la classe, puis
Nouveau fichier Java > Classe...
. -
Indiquer que la classe hérite de
HttpServlet
de l'APIservlet
(en ajoutantextends HttpServlet
après le nom de classe).Attention !
Attention, si vscode ne trouve pas la classe (abstraite)
HttpServlet
, c'est certainement que tu n'as pas bien configuré le projet, peut-être en n'indiquant pas le bon archetype maven.Il faut alors reprendre la création du projet maven vue dans le TD1.
⚠️ Dans tous les cas, ici, il ne faut pas ajouter "manuellement" les JARs. La gestion des dépendances est effectuée par Maven, dans le fichier 📄
pom.xml
.Classes et interfaces importées automatiquement
Tous les imports sont automatiques. Il faut pour cela utiliser l'autocomplétion, qu'on obtient avec Ctrl+Space.
Ici, il suffit donc dans la déclaration de la classe d'ajouter après son nom
extends Https
, puis d'appuyer sur entrée après avoir sélectionnéHttpServlet
.Si tu ne fais pas ainsi, l'import n'est pas automatiquement ajouté !
-
Recopier le contenu suivant :
☕ Code Java - Servlet MaPremiereServlet 1 2 3 4 5 6
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); //(1)! out.println("<html><head></head><body>Hello World !</body></html>"); //(2)! }
- Cet objet va nous permettre d'écrire dans la réponse HTTP.
- On écrit directement le code HTML dans la réponse, qui va s'afficher dans le navigateur.
Surcharger des méthodes
Nous venons ici d'implementer la méthode
void doGet(HttpServletRequest, HttpServletResponse)
.vscode permet de faire cela directement via 🖱️
Source Action...
, puisOverride/Implements Methods
, puis en sélectionnant les méthodes que l'on souhaite implémenter et/ou surcharger.Donner des noms de variables explicites !
Par défaut, lorsqu'on surcharge la méthode
doGet
par exemple, les noms des paramètres sontreq
etresp
.Prend systématiquement le temps de le renommer en
request
etresponse
!Dès que le code devient compliqué, il est très important d'avoir des noms de variables clairs et explicites ! Avec l'autocomplétion, cela ne prend en plus pas plus de temps pour les écrire ...
Ajouter des raccourcis à vscode
Par défaut, il n'y a aucun raccourci affecté à l'affichage de
Source Action...
. Mais il est possible d'en rajouter un !Pour cela, il faut ouvrir le fichier
keyBindings.json
, qui recense tout vos raccourcis personnalisés.- Si vous ne l'avez jamais ouvert, il faut faire Ctrl+k ; Ctrl+s, puis cliquer sur l'icône tout en haut à droite pour afficher le fichier JSON.
- La prochaine fois, il suffira de faire Ctrl+p, puis saisir
keybindings.json
.
Dans ce fichier, ajouter le code suivant pour que le raccourci Ctrl+Shift+a permette cette action :
JSON// Placer vos combinaisons de touches dans ce fichier pour remplacer les valeurs par défaut [ // Raccourcis précédents ... { "key": "ctrl+shift+a", "command": "editor.action.sourceAction" }, // Raccourcis suivants ... ]
Remarque
En programmation, la tradition veut que le premier programme rédigé dans un langage donné soit l'affichage d'Hello World !.
C'est ce que nous allons faire ici, en affichant ce message dans notre navigateur.
Bonne pratique
Lorsqu'on utilise vscode, on prendre l'habitude, à chaque modification de code Java, d'effectuer deux actions :
-
Shift+Alt+O : Permet de faire du ménage dans les imports en important ceux nécessaires, et en supprimant ceux qui ne sont pas utilisés.
Les
import java.io.*
par exemple sont remplacés par l'import des classes utilisées uniquement.Sans cette action, des erreurs sont signalées ici.
-
Ctrl+Shift+P puis saisir format document : Permet de formater le code, de la même façon pour tout le monde.
C'est vraiment un plus si le code de tout le monde est formaté de la même façon. Cela permet de le comprendre beaucoup plus rapidement !
-
C'est bon, notre Servlet est créée ! Il n'y a plus qu'à la déployer.
Pour cela, il suffit d'ajouter l'annotation suivante sur notre classe :
Annotation pour déployer la Servlet@WebServlet(name="maPremiereServlet", urlPatterns = {"/maPremiere"})
- Pour le paramètre
name
, on peut indiquer ce qu'on veut. Il s'agit du nom que l'on donne à la servlet déployée. Nous ne l'utiliserons pas ici. On donnera le nom de la classe, avec la première lettre en minuscule. -
Pour le paramètre
urlPatterns
, il s'agit d'une liste (d'où les{}
) des URLs qui seront redirigées vers cette Servlet.Avec cette configuration, cela signifie que l'URL http://localhost:8080/td2/maPremiere permet d'exécuter cette Servlet.
- Pour le paramètre
-
Après avoir réexécuter la compilation Maven, vérifier que "Hello World" est bien affiché à cette http://localhost:8080/td2/maPremiere (il faut bien sûr que le serveur Tomcat soit démarré et que le projet Java soit déployé dessus).
Prise en compte des modifications
Pour que les modifications effectuées sont bien prises en compte, il faut, après chaque modification ré-exécuter
mvn clean install
.