Exercice 1 - Une première Servlet⚓︎
Maintenant que notre premier projet Web dynamique est créé, nous allons pouvoir créer des Servlets.
- Pour en créer une, il faut aller dans la vue
Project Explorer
, sur le projet PremierProjet, faire un clic droit, puis :material-mouse:New > Other
. Dans l'arborescence, naviguer ensuite vers :material-file-tree:Java > Class
. - Cliquer sur
Next > . -
Indiquer le package :
fr.univtours.polytech.premierprojet.servlet
.Warning
On ne laisse jamais le package par défaut lorsqu'on développe une application avec JEE.
-
Indiquer le nom de classe :
MaPremiereServlet
.Remarque
Il est pratique d'indiquer ce qu'est la classe dans son nom, ici, une Servlet.
-
Indiquer que la classe hérite de
HttpServlet
de l'APIservlet
(en cliquant surBrowse en face de Superclass), puis clique surFinish .Warning
Attention, si Eclipse ne trouve pas la classe (abstraite)
HttpServlet
, c'est que tu n'as pas bien configuré le runtime.Il faut alors :
- Vérifier que le runtime "Apache Tomcat v9.0" a bien été créé (et le créer si ce n'est pas le cas).
- Faire un clic droit sur le projet, puis :material-mouse:
Properties
, et aller dans le menuProject Facets
. Il y a alors un ongletRuntime
où il est possible de cocher le bon runtime, si cela n'a pas été fait à la création du projet.
:warning: Dans tous les cas, ici, il ne faut pas ajouter "manuellement" les JARs. Tout ceux nécessaires sont dans la runtime Tomcat.
-
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.
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 Eclipse, on prendre l'habitude, à chaque modification de code Java, d'effectuer deux actions :
-
Ctrl+Shift+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+F : 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, on va la recenser dans le descripteur de déploiement. C'est le fichier 📄
web.xml
présent dans le dossier 📂webapp\WEB-INF
.Le fichier 📄 web.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>PremierProjet</display-name> <servlet><!--(1)!--> <servlet-name>maPremiereServlet</servlet-name> <servlet-class>fr.univtours.polytech.premierprojet.servlet.MaPremiereServlet</servlet-class> </servlet> <servlet-mapping><!--(2)!--> <servlet-name>maPremiereServlet</servlet-name> <url-pattern>/bonjour</url-pattern> </servlet-mapping> </web-app>
-
Ici, on recense la servlet.
-<servlet-name>
: on lui donne un nom.
-<servlet-class>
: on indique la classe correspondante. -
La balise
<servlet-mapping>
permet d'indiquer avec quelle(s) URL(s) on peut accéder à la Servlet :
-<servlet-name>
indique de quelle servlet on parle,
-<url-pattern>
indique quelle(s) URL(s) y accède. Ici, l'URL http://localhost:8080/PremierProjet/bonjour.
Note
Le descripteur de déploiement peut être vu comme une sorte d'annuaire, dans lequel nous allons recenser
- toutes les servlets définies dans l'application (on utilise la balise
<servlet>
pour cela), - quelles sont les URL qu'il faut saisir pour y accéder (on utilise la balise
<servlet-mapping>
pour cela).
Le lien entre ces deux blocs se fait via la balise
<servlet-name>
. -
-
Après avoir redémarré le serveur tomcat, vérifier que "Hello World" est bien affiché à cette URL.
Prise en compte des modifications
Pour être sûr que les modifications effectuées sont bien prises en compte, le plus simple est de redémarrer le serveur Tomcat après chaque modification.