Principe de l'examen : le principe du TP noté est de vous faire réaliser
des exercices, en les corrigeant au fur et à mesure de leur réalisation.
Dès que vous avez réalisé une partie d'un exercice (typiquement la réponse à une
question indiquée par le symbole ), vous appelez le
correcteur qui viendra vérifier la validité de votre travail. Si vous
faites fausse route, vous n'aurez pas les points correspondant à cette
question, mais le correcteur vous le signalera et vous pourrez
continuer à traiter le sujet.
Important : les deux exercices sont indépendants et peuvent être
réalisés dans n'importe quel ordre.
Exercice 1 - Serveur HTTP et formulaires
Pour cet exercice, vous devez récupérer l'archive
BaseHttp.jar
. Téléchargez et
décompressez cette archive dans le répertoire de votre choix avec la
commande
jar xvf BaseHttp.jar
Les fichiers seront tous installés dans un répertoire de nom
BaseHttp
.
Plusieurs fichiers se trouvent dans ce répertoire.
Tel qu'il est, le programme HttpServer.java
doit compiler
(javac HttpServer.java
) et peut s'exécuter
(java HttpServer 8888
). Lancez-le et vérifiez qu'il est capable
de "servir" les fichiers qui sont accessibles relativement au
répertoire de lancement. Par exemple, l'accès à
http://localhost:8888/accueil.html
depuis un
navigateur ou via une connexion TCP par telnet
ou netcat (nc) vous permet de visualiser le
contenu du fichier correspondant.
Appelez le correcteur quand cela fonctionne (1 point).
Dans les questions qui suivent, vous devrez modifier le
programme HttpServer.java
afin d'obtenir le
fonctionnement attendu. En général, les modifications sont assez
simples; il s'agit d'avantage de tester votre connaissance du
protocole HTTP que de vous faire coder en Java.
En modifiant légèrement
le serveur et de manière spécifique à cette question, faites en
sorte que les navigateurs présentent les fichiers dont le nom
commence par "result-
" comme du texte "à plat", en
particulier sans interpréter les balises HTML lorsque ces
fichiers en contiennent. Par exemple, l'accès via le serveur au
fichier http://localhost:8888/result-fin.html
doit
être visualisé par un navigateur comme ceci:
</b> </p> <hr> <p> Vous pouvez <a href="accueil.html">retourner à l'accueil</a> ou <a href="form.html">retourner au formulaire</a>. </p> <hr> </body> </html>
Appelez le correcteur quand cela fonctionne (3 points).
Pour faire ce qu'on
attend de lui, c'est-à-dire offrir un service de calcul
via le serveur HTTP, le formulaire contenu dans le
fichier form.html
manque d'informations. À partir du
serveur, qui lui dispose déjà des informations nécessaires,
modifier le formulaire pour que le service fonctionne.
Appelez le correcteur quand cela fonctionne (1 point).
Si la syntaxe de la
requête n'est pas bonne ou que la requête est différente de GET,
le serveur ferme la connexion avec le client. En revanche,
actuellement, lorsque le nom de la ressource ne correspond pas à
un fichier (ni à "compute"
) ou que les arguments ne
permettent pas de le réaliser un calcul, le serveur renvoie un
message d'erreur en gardant la connexion persistante. Faire en
sorte que, dans tous les cas d'erreurs, y compris les derniers
cités, le serveur "mette fin" à la connexion persistante,
c'est-à-dire provoque proprement la fermeture de la connexion
avec le client. Afin de tester cette modification, vous pourrez
utiliser telnet ou netcat (nc) en
guise de client.
Appelez le correcteur quand cela fonctionne (3 points).
Exercice 2 - Servlets pour opérations arithmétiques
En utilisant le serveur de servlets Tomcat, on souhaite écrire un service permettant de réaliser des opérations arithmétiques simples sur des entiers.
À la racine de votre répertoire, télécharger l'archive
BaseTPnote.jar et la décompresser
avec la commande
jar xvf BaseTPnote.jar
Le répertoire créé contient normalement tout ce qu'il faut
pour développer et installer la webapp TPnote
.
Avant de démarrer Tomcat, penser à mettre à jour la variable d'environnement
JRE_HOME
par la commande
export JRE_HOME=/usr/lib/j2sdk1.6-sun/
puis démarrer Tomcat par la commande
tomcat start
En vous placant dans le répertoire TPnote
, installer la webapp
TPnote
par la commande
ant install
Depuis un navigateur, à partir de l'URL
http://localhost:8080/, vérifiez en
accédant au manager que vous avez bien accès à la page d'accueil et
que la servlet Bonjour
, accessible par un lien, fonctionne
correctement.
Appelez le correcteur quand cela fonctionne (1 point).
Les questions suivantes sont à réaliser dans le répertoire TPnote
,
et vous devrez utiliser les tâches ant
pour compiler les sources
et pour gérer le déploiement de la webapp sur le serveur de servlets
(par les commandes ant remove
, ant clean
et
ant install
).
TPnote/web/formCalcul.html
décrit un formulaire
permettant de réaliser des calculs simples sur des entiers. Modifier ce
fichier de sorte que, lorsque le bouton Calculer
du formulaire
est pressé, les données soient envoyées au serveur par une requête
POST
à l'url de nom calcul
.
TPnote/web/WEB-INF/web.xml
pour spécifier
que l'url de nom calcul
correspond à une servlet associée à
la classe fr.umlv.servlet.Compute
.
fr.umlv.servlet.Compute
et sa méthode
doPost()
de sorte que, dans un premier temps, elle renvoie
simplement au client une page HTML contenant le message
"Formulaire soumis", ainsi qu'un lien permettant de retourner au
formulaire de calcul. Par exemple, quelque chose du genre:doPost()
de la servlet
fr.umlv.servlet.Compute
pour qu'elle
réalise le traitement attendu, c'est à dire affiche le résultat de
l'opération. Par exemple:fr.umlv.servlet.Compute
de sorte que le lien
permettant de revenir au formulaire ne pointe plus vers le fichier statique
formCalcul.html
, mais vers l'url calcul
.
Écrivez une méthode doGet()
dans la servlet qui permet d'obtenir
le même comportement que précédemment.doGet()
de la servlet fr.umlv.servlet.Compute
offre la possibilité à chaque utilisateur de mémoriser une valeur
(indépendante de la valeur mémorisée par d'autres utilisateurs éventuels).
Typiquement, il s'agit d'une mémoire comme sur les calculatrices simples, qui
permet