Exercices servlets/JSP
Le langage Java
Exercices sur Servlets/JSP
XVII-1
JMF
Exercices servlets/JSP
Le langage Java
Installation
Installer, si ce n'est dj fait : J2SE (1.6) tomcat (6.0) un diteur de texte (notepad++)
XVII-2
JMF
Exercices servlets/JSP
Le langage Java
Correspondance URL vs. emplacement disque
On doit avoir la correspondance :
http://localhost:8080/ <=> %TomcatHome%\webapps\ROOT\
Voir (ou construire) des dmos de
http://localhost:8080/ http://localhost:8080/test2JMF.html http://localhost:8080/test2JMF.jsp
XVII-3
JMF
Exercices servlets/JSP
Le langage Java
Exercice 1 (1/3)
Ecrire la page html suivante :
Le menu est compos de Java SkyLine, Java World, Programmez ! (menu par dfaut), Devellopez.com La transformer en page jsp. Qu'y a t il faire ?
XVII-4
JMF
Exercices servlets/JSP
Le langage Java
Dploiement d'une application web
Remarque 1 Toute application web (= site web mis
%TOMCAT_HOME%\webapps\MonAppliWeb) sera accessible par
des URL commenant par http:://localhost:port/MonAppliWeb Remarque 2 Toute application web (= site web mis %TOMCAT_HOME%\webapps\MonAppliWeb) est dcrite par son fichier
%TOMCAT_HOME%\webapps\MonAppliWeb\WEBINF\web.xml
XVII-5
JMF
Exercices servlets/JSP
Le langage Java
Dploiement d'une servlet
Mettre dans le web.xml de votre application web, les lignes :
<servlet> <servlet-name>unNomQuelconque</servlet-name> <servlet-class>AfficheChoixDansLaJSPServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>unNomQuelconque</servlet-name> <url-pattern>/AfficheChoixDansLaJSPServlet</url-pattern> </servlet-mapping>
Remarque 3 Les servlets de l'application web doivent tre ranges dans MonAppliWeb\WEB-INF\classes
XVII-6
JMF
Exercices servlets/JSP
Le langage Java
Exercice 1 (2/3)
Placer la page jsp dans l'arborescence tomcat (par exemple sous TomcatHome\webapps\ROOT\) et accder cette jsp par un navigateur une URL commenant par http://localhost ... Lorsqu'on clique sur le bouton commander de la page jsp prcdente, on demande lancer la servlet d'URL /AfficheChoixDansLaJSPServlet Accder cette page JSP par le navigateur (lancer ce qu'il faut pour cela) Indiquer o se trouve la servlet gnre associe cette JSP (traduction de cette JSP).
XVII-7
JMF
Exercices servlets/JSP
Le langage Java
Exercice 1 (3/3)
Ecrire la servlet AfficheChoixDansLaJSPServlet. Cette servlet affiche les choix qui ont t fait par l'utilisateur dans la page JSP prcdente.
XVII-8
JMF
Exercices servlets/JSP
Le langage Java
Sessions
Une session = Une suite dinteractions entre un client et un serveur Web
Elle couvre plusieurs requtes HTTP sur une priode donne
On peut utiliser les sessions pour
Mmoriser les actions dun utilisateur unique Exemples
achats en ligne (panier de commande) Examens distance
HTTP : un protocole sans tat => Il faut une technique pour mmoriser les sessions
XVII-9 JMF
Exercices servlets/JSP
Le langage Java
HttpSession
LAPI Servlet fournit linterface HttpSession
Les objets HttpSession mmorisent des donnes pendant une suite d'interactions d'un utilisateur (utilisant le mme navigateur) sur l'application web Fonctionne comme une table de hachage, Est stock cot serveur Repr par un sessionId chang entre le serveur web et le client web
XVII-10
JMF
Exercices servlets/JSP
Le langage Java
Utiliser HttpSession (1/2)
Dans un premier temps on rcupre la session (objet de la classe HttpSession) par HttpSession getSession() lanc sur request Cet appel retourne la session courante associe la requte. Si la session nexiste pas, elle sera cre. Une fois la session obtenue on peut mmoriser des donnes par
void setAttribute(String name, Object value)ou les rcuprer par : Object getAttribute(String name)
XVII-11 JMF
Exercices servlets/JSP
Le langage Java
Utiliser HttpSession (2/2)
HttpSession session = request.getSession(); ArrayList laListe = ... session.setAttribute("cnam", laListe); ArrayList recupListe =(ArrayList) session.getAttribute("cnam");
XVII-12
JMF
Exercices servlets/JSP
Le langage Java
Exercice 2 (1/2)
Construire une servlet qui affiche un compteur qui est incrment chaque accs sur cette servlet pendant une session. Indication : on pourra utiliser la classe Integer qui modlise le type int. Remarque importante : il faut que votre navigateur ait activ les cookies
XVII-13
JMF
Exercices servlets/JSP
Le langage Java
Gestion du session id (1/2)
Par dfaut le session id est pass comme cookie du serveur au client web (qui le lui renvoie chaque requte cf. gestion des cookies dans http) A condition que le client web autorise les cookies Si ce n'est pas le cas, il faut passer le session id de sorte le rcuprer lors de la prochaine interaction => la solution. Le mettre dans tous les liens de la page retourne car sinon complter !!
XVII-14 JMF
Exercices servlets/JSP
Le langage Java
Gestion du session id (2/2)
La technique : Utiliser sur response la mthode encodeURL() ayant pour argument l'URL encoder exemple :
String leLienEncode = response.encodeURL("/servlet/CounterServlet"); out.println("<a href=" + leLienEncode + ">cliquez ici</a>");
il faut faire cela sur toutes les liens de la page retourne. Pourquoi ?
XVII-15 JMF
Exercices servlets/JSP
Le langage Java
Exercice 2 (2/2)
Relancer l'exercice prcdent en dactivant les cookies sur votre navigateur Rcrire votre servlet de sorte que le compteur soit incrment mme sans l'utilisation des cookies
XVII-16
JMF
Exercices servlets/JSP
Le langage Java
Exercice 3
Ecrire une architecture MVC cot serveur. On pourra utilis la page JSP du premier exercice.
XVII-17
JMF