Date de première publication : 2012/05/29
Objectif et contexte
L'objectif de cet exercice est de créer des petits programmes Java qui s'exécutent sur le serveur : les servlets.
L'environnement de développement est le suivant (même si cela n'a pas vraiment d'importance) :
- Java : Java SE 8 u192 et Java EE 8
- Netbeans 8.2
- Glassfish 4.1.1
Création de la servlet
On va créer une servlet au travers de l'assistant de Netbeans.
Créer un nouveau projet Netbeans :
- Projet : Java Web / Web application
- Nom : Decouverte
- Serveur d'applications : GlassFish Server (installer si ce n'est pas fait)
- Domain name and location : domain1 (laisser les valeurs par défaut)
- Frameworks : Aucun
L'assistant génère un projet presque vide avec un répertoire Web qui contient un fichier index.html
mais ce n'est pas ce qui nous intéresse.
On va maintenant créer une servlet pour de bon cette fois :
- (M) File > New file (ou clic droit sur le projet)
- Categories : Web
- File types : Servlet
- Class Name : DecouverteServlet (ou ce que vous voulez)
- packages : servlets (ou ce que vous voulez, l'usage du package par défaut est découragé)
- COCHER add information to deployment descriptor (web.xml)
Une classe java apparait dans Source Package. La classe fille de HttpServlet
propose une redéfinition des méthodes doGet()
et doPut()
qui appellent une méthode processRequest()
. Tout cela pour ne pas avoir à gérer le type de passage des paramètres.
- Déployer ("Deploy" par le bouton droit sur le projet) l'application web et lancer la servlet pour voir ce qu'elle fait par défaut :
http://localhost:8080/Decouverte/DecouverteServlet
Si vous avez choisi des noms différents, adaptez ! Si vous avez cliqué sur le bouton "Run" de Netbeans, le site va s'afficher (la page index.html) pas la servlet. Vous pouvez également avoir un numéro de port différent de 8080
- Modifier la servlet pour mettre un message un peu plus personnalisé en modifiant la réponse et relancer
out.println("<p>Bonjour toi<>");
- Ajouter un compteur à la servlet en attribut, l'incrémenter et l'afficher lors de l'appel d'une requête. Rafraîchir plusieurs fois la page du navigateur !
- Vous pouvez afficher dans différents navigateurs, que constatez-vous ?
Si le compteur n'est pas incrémenté, redéployez l'application et vérifiez que la page n'est pas mise en cache. Quand ce compteur est-il remis à 0 ?
Interaction avec la servlet
Nous allons maintenant interagir avec la servlet à partir d'une petite page HTML, comme celle qui est créée par défaut :
http://localhost:8080/Decouverte
Ajouter un formulaire contenant un champ texte et un bouton submit
par exemple dans le fichier index.html
. L'attribut action
du formulaire fera appel à la servlet et l'attribut method
représentera la valeur POST ou GET (mode de passage des paramètres au serveur).
<form action="DecouverteServlet" method="get">
<input type="text" name="texte">
<input type="submit">
</form>
L'attribut name
(ou préférentiellemet id
) est nécessaire.
Modifier la servlet pour qu'elle affiche le champ texte du formulaire avec ma méthode getParameter(nom)
de l'objet request
). Le paramètre nom
est le contenu de l'attribut name
ou id
de l' élément du formulaire
Sur le même principe afficher le mode de passage des paramètres (getMethod()
de request
). La valeur est GET ou POST (attribut method
de la balise form
Nous arrêtons là la découverte des servlets. Nous en utiliserons plus tard, notamment lorsque nous verrons les possibilités d'authentification.