Vous êtes sur la page 1sur 8

TP 1

TP 01 J2EE Formulaires Servlets et JSPs Prise en Main Tutore de l'Environnement et Comprhension des Principes de Base
Evaluation : Raliser le TP et rendre un CR avec les rponses aux 19 questions Remarque : Le TP peut tre aussi ralis sou l'IDE Eclipse. J2EE est absolument indpendant des environnements il suffit d'avoir un Server d'Application et un serveur http et un environnement prenant en compte les librairies J2EE. Ce TP est un TP de dmarrage tutore pour la prise en main de l'environnement. Il contient des exercices simples pour vous permettre d'avancer sur les autres TPs de manire plus autonome.

Architecture de lAtelier :
Les diffrents lments qui composent notre architecture sont dcrits dans la figure qui suit. Les pages html statiques sont hbergs par le serveur http. Les Servlets et les JSP sont hbergs par le Serveur d'Application plus prcisment dans le Web Container.

Client Web

Serveur HTTP

Serveur dApplication Web Container

- Un Client lger (Navigateur) - Un Serveur http (Gnralement Apache) - Un Serveur dapplication contenant au moins un Web Container : TomCat (Web Container), GlassFish (Web Container & EJB Container)

PARTIE A Objectifs
Installer les environnements Comprendre le rle du serveur HTTP Crer des pages Web Crer des formulaires Web Comprendre les environnements de dveloppement intgrs (IDE) NetBeans et Eclipse

Gnralement le serveur http est livr et install avec le Serveur dApplication. En pratique ils peuvent tre installs soit sur la mme machine physique ou sur deux Machines distinctes. Linstallation dun IDE ddi J2EE comme Netbeans (versions incluant les serveurs J2EE) ou Eclipse (version J2EE aussi) implique automatiquement linstallation des serveurs. Souvent les diteurs vous laissent le choix au moment du tlchargement. Les versions les plus comptes sont les plus lourdes. Cr par Saloua Ben Yahia Page 1 sur 8

TP 1

Tlcharger la dernire version de Netbeans (7.1) sur le site http://netbeans.org/downloads/index.html Vous pouvez choisir la colonne de NetBeans JAVA 214MO qui intgre les serveurs dont on a besoin. Linstallation dun IDE J2EE ncessite un JDK. Choisir la version JDK 1.6.X qui est la plus stable et la tlcharger si ncessaire. Dans le cadre de ce TP01 on utilisera uniquement le serveur http Apache. Remarque : vous pouvez recopier le code.

MANIPULATION 1 : Installation de Netbeans


Installer le JDK et Netbeans et lancer lIDE. Suivez les tapes et les options dinstallation.

MANIPULATION 2 : Cration de votre projet web sous NetBeans


Crer un nouveau projet (ex TP1J2EE) de type Web Application et choisir votre Serveur dApplication. Ouvrir votre projet et ouvrir le rpertoire ddi aux ressources Web (Web Pages) afin de crer une page statique Bonjour.html. Click droit sur cette page Bonjour.html et choisir Run pour la lancer. Que se passet t-il ? Choisir longlet Services et vrifier que le Serveur http (ou le SA) est bien dmarr. Arrter le serveur (click droit et stop) et vrifier que la page ne fonctionne plus.

Questions 1. Sur quel port fonctionne le serveur http?

MANIPULATION 3 : Ecriture dun formulaire


Refaire a manipulation prcdente et choisir comme nom Form.html. Copier le texte ci-dessous et le coller dans le contenu en prenant soin deffacer auparavant tout le contenu existant et enfin lancer la page. Traduire la page en franais et rajouter le champ prnom, adresse. Testez. <P> Please fill out this form with your name. Thanks! <FORM> <P> Please enter your name: <P> name: <INPUT NAME="nom" TYPE=" TEXT" SIZE=" 12" MAXLENGTH=" 20"> <P> Thank you! <INPUT TYPE="SUBMIT"> </FORM>

PARTIE B Objectifs
Comprendre et manipuler les Servlets et les Formulaires Comprendre la mthode service Continuer se familiariser avec Netbeans / Eclipse

MANIPULATION 1 : Dveloppement dune Servlet Simple


Cr par Saloua Ben Yahia Page 2 sur 8

TP 1

Dans la manipulation qui suit on ralisera un premier programme : une servlet dont le rle est de renvoyer du code html. Le schma suivant explique ou sont hbergs les diffrents lments. La Servlet en particulier est excute par le SA dans son Web Container.
Client Web

Serveur HTTP
(Apache)

Serveur dApplication (TomCat ou GlassFish)


ServletBonjour Web Container

Pages Html

Dans le projet TP1J2EE click crer un nouveau package ex : servlets (par convention le nom dun package est en minuscules, vous pouvez choisir un autre nom) et ensuite sous ce package crer une Servlet avec le nom ServletBonjour Copier le code suivant dans la classe cre. Prenez soin de comprendre le code. Assurer vous davoir effac le contenu qui prcde et excuter la servlet en click droit ensuite run. 2. Quelle est lURL de la Servet ? Quel est son URI ? 3. Arrter le Serveur dApplication (sous onglet Services). La servlet continue elle de fonctionner ? 4. Modifier la servlet pour quelle affiche maintenant le message Bonjour Tout Le Monde 5. Modifier la Servlet pour qu'elle appelle une page statique Bonjour.html. effacer pour tout le retour html et remplacer par response.sendRedirect("?"). Remplcer le ? par l'URL de la page Bonjour.html qui contiendra le message de Bienvenue. Code de la ServletBonjour package servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name="ServletBonjour", urlPatterns={"/ServletBonjour"}) public class ServletBonjour extends HttpServlet { @Override public void service( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res. setContentType("text/html"); PrintWriter out = res. getWriter(); out. println("<HTML><BODY>"); out. println("<h1> Hello World!</h1>"); out. println("</BODY></HTML>");}} Remarques Cr par Saloua Ben Yahia

Page 3 sur 8

TP 1

- On peut changer aussi lURI pour quelle ne soit plus par dfaut le nom du projet. Mais cela va impacter toutes les servlets du projet. Pour cela il suffit douvrir le fixhier sun-web.xml et de changer la valeur du context root ou la racine du contexte dexcution dynamique. Sauvegarder le changement et vrifier en lanant la servlet que lURI a chang. - Remarquez ici la prsence dannotations (prcds dun @). Les annotations ont ts intgrs depuis la version 1.4 de J2EE. Elles servent dcrire textuellement le code et seront notamment utilises pour permettre le dploiement sur le serveur dApplication. En effet elles sont exploites pour gnrer le fichier xml permettant au Serveur dApplication de reconnatre les servlets et leurs noms. Si vous les supprimez il vous sera impossible de les excuter car le SA naura pas le descriptif de leur utilisation. - @WebServlet, permet de marquer une classe comme servlet. Cette classe doit toujours tendre HttpServlet

MANIPULATION 2 : Rcupration des donnes dun formulaire


Dans la manipulation qui suit on ralisera une Servlet et un Formulaire. Le formulaire devra appeler la servlet quand on clique sur le bouton submit. La servlet rcupre deux donnes le nom et le prnom saisie dans le formulairerajoute du html et renvoie un message Bonjour X, Y (X tant le nom saisi et Y le prnom saisi)au client. La servlet renvoie donc une page dynamique. Crer une deuxime servlet , ServletBonjourForm et copier le code suivant dans la mthode post ou service. Crer sous le rpertoire Web Pages la page suivante : FormBonjour.html Lancer le formulaire. Complter le code en rajoutant un moyen pour convertir les paramtres a et b ne deux entiers. Saisir deux valeurs et cliquer sur le bouton soumettre requte du formulaire. Que se passe t-il expliquer. public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); String nom = req.getParameter("nom"); String prenom = req.getParameter("prenom"); out.println("<HTML><BODY>"); out.println("<h1> Bonjour!" + nom+prenom + "</h1>"); out.println("</BODY></HTML>"); } <P> Saisir le nom et le prnom <FORM METHOD=" POST" ACTION="/TP1J2EE/ServletAdd"> <P> entrer votre nom: <P> nom: <INPUT NAME="nom" TYPE=" TEXT" SIZE=" 12" MAXLENGTH=" 20"> <P> nom: <INPUT NAME="prenom" TYPE=" TEXT" SIZE=" 12" MAXLENGTH=" 20"> <P> merci! <INPUT TYPE="SUBMIT"> </FORM> Remarquez que laction pointe vers lURL de la servet. Elle doit contenir lURI. Elle est dans ce cas relative (par rapport au serveur). Elle peut tre absoule : htp://localhost :8080/TP1J2EE/ServletBonjourForm

6. Changer la mthode POST dans le fomulaire par Get que remarquez vous ? ou sont transmis ces paramtres ? La Servlet continue t-elle de fonctionner ? pourquoi Cr par Saloua Ben Yahia Page 4 sur 8

TP 1

7. Changer le nom de la mthode service dans la Servlet par un nom au choix (service2). Excuter le formulaire, recevez vous une rponse ? pourquoi ? 8. On veut que la ServletBonjour fonctionne uniquement en mode POST. Si un utilisateur appelle directement la ServletBonjour par son URL (copie dans la barre d'adresse du navigateur) alors il est redirig vers le formulaire FormBonjour.html. Ecrire le code correspondant dans la bonne mthode (penser utiliser la redirection sendRedirect) 9. Testez les mthode init et destroy. Redfinir ces mthodes dans votre Servlets et vrifiez que init est appele une et une seule fois au chargement de linstance indpendamment du nombre de requte. Vrifiez aussi que destroy est appele la destruction de linstance. 10. Si le nom/prenom sont vide ou a blancs (chaine vide ou constituts uniquement de caractres blanc) la servlet redirige vers le formulaire de saisie. Raliser les modifications ncssaires.

MANIPULATION 3 : Utilisation des JSP (Revenir vers cette question aprs avoir termin la partie suivante )
11. Transformer la ServletBonjourForm pour qu'elle ne retourne aucun html ni statique ni dynamique. Elle devra soit rediriger vers des pages statiques (avec le sendRedirect) ou vers pages dynamiques (des JSPs).

Partie C Objectif
- Comprendre la technologie des JSPs avec des expressions, des scritlets.. - Appeler directement des JSP par leurs URL

Architecture
On retrouve larchitecture J2EE de base. Les diffrents lments qui composent notre solution sont dcrits dans la figure qui suit. Les Servlets et les JSPs sont excuts et hbergs par le SA (Web Container). Ce nest donc pas le serveur http qui les excute mais bien le SA. Les JSP sont des sortes de Servlet mais quon peut crire sous formes de pages html. Une fois compils les JSP sont transforms en servlets. Mais on les manipule comme des pages html classiques. Dans le cadre de ce TP le Serveur http et le Serveur dApplication (Web Container) seront utiliss. LIDE est au choix (NetBeans ou Eclipse).
Client Web

Serveur HTTP

Serveur dApplication
Web Web Container Container Pages JSP Servlet

Pages Html

Manipulation 1 : Appel Direct une JSP simple


Cr par Saloua Ben Yahia Page 5 sur 8

TP 1

Dans cette partie on va utiliser trois technologies pour avoir le mme affichage dun simple message (une Vue) : Une page html classique, une servlet et une JSP. - Technique 1 Vue avec Page Statique : Sous votre projet et sous web pages crer une page html qui affiche Bonjour - Technique 2 Vue gnre par du html dans la Servlet : Crer ensuite une Servlet qui affiche aussi Bonjour - Technique 3 Vue Dynamique avec JSP : Sous Web Pages, click droit, choir nouveau fichier ensuite choisir dans la liste JSP. Crer une JSP Bonjour.jsp (lextension est rajoute automatiquement par netbeans) qui va contenir le mme code html que la page dj crer Bonjour.html. A ce stade la page JSP contiendra du simple code html. Excutez les trois fichiers. Remarquez que la JSP peut tre appele directement par son URL. On est dans le cas dun Appel direct de cette ressource par son URL. Noter lURL de la JSP.
Bonjour.jsp

Cas Appel Direct la JSP 12. On obtient le mme rsultat mais quelle est la diffrence entre les trois possibilits ? 13. Observez le code de la Servlet rsultant de la compilation de la JSP. Sous Netbeans il suffit de faire un click droit sur la JSP et de choisir view Servlet .

Manipulation 2 : JSP Scriptlets Appel Direct


Dans ce cas la JSP va contenir des Scriptlets. On va continuer lappeler directement par son URL. Sous votre projet et sous web pages crer la JSP suivante qui permet dafficher des valeurs entires comprises entre i=1 i=10. Sous Nouveau Fichier choisir loption JSP et Sauvegarder cette JSP sous le nom MaJSP1.jsp. Que contient cette JSP (des expressions, des scriptlets, des directives) ? Vrifier que la JSP sexcute correctement avec click droit run <HTML> <HEAD><TITLE>Boucle</TITLE></HEAD> <BODY> <H1> Ma premire JSP <%int i=0; // dclaration de variable for (i=1;i<=10;i++) { out.println("i="+i); } %></H1></BODY></HTML>

Manipulation 3 : JSP Appel Direct Scriptels, Expressions


On va crire une variante de la JSP prcdente qui permet dafficher des valeurs entires comprises entre i=1 i=10. On va introduire lutilisation dune expression <%=i%>. 14. Quel code cette expression <%=i>remplace t-elle par rapport au code prcdent ? Sauvegarder cette JSP sous le nom MaJSP2.jsp et vrifier que la JSP sexcute correctement avec click droit run. Cr par Saloua Ben Yahia Page 6 sur 8

TP 1

<HTML> <HEAD><TITLE>Hello</TITLE></HEAD> <BODY> <H1> Boucle <%for (int i =1; i<10;i++){ %> i= <%=i%><%}%></H1></BODY></HTML>

Manipulation 4 : JSP et Appel via un Formulaire


Dans ce cas on va appeler la JSP via un formulaire. Lappel direct reste possible mais il va engendrer des erreurs vu que la JSP aura besoin de valeurs provenant du formulaire pour safficher correctement. Ecrire donc un formulaire dans lequel i sera une variable introduire dans un champ. Laction doit pointer vers MaJSP3.jsp. Notez que lURI doit correspondre au nom de votre projet (ici TPDL). Ecrire une JSP, MaJSP3.jsp qui va afficher une boucle avec i=1 jusqua la limite choisie par lutilisateur dans le formulaire. Le code vous est donn ci-dessous.
Formulaire

MaJsp3.jsp

Cas Appel via un Formulaire <html> <body> <P> Please fill out this form <FORM METHOD="GET" ACTION="/TPDL/MaJsp3.jsp"> <P> i: <INPUT NAME="limite" TYPE=" TEXT" SIZE=" 12" MAXLENGTH=" 20"> <P> Thank you! <INPUT TYPE="SUBMIT"> </FORM></body></html> <HTML> <HEAD><TITLE>JSP FORMULARE</TITLE></HEAD> <BODY> <H1> JSP form <%String limite; // dclaration de variable limite=request.getParameter("limite");// request objet implicite int lim = Integer.parseInt(limite); for(int i=1;i<=10;i++){%>i= <%=i%><%}%> </H1></BODY></HTML>

Manipulation 5 : Contrle de saisie dans la JSP

Cr par Saloua Ben Yahia

Page 7 sur 8

TP 1

Modifier la JSP prcdente pour que prendre en compte le cas derreur ou i nest pas positif et nest pas compris entre 1 et 10 (pour faire simple utiliser des structures conditionnelles). Vous ne devez utiliser que des JSP ct Serveur. Le traitement de lerreur se fera une redirection vers une page statique. La response et la request sont des variables automatiquement reconnue dans la JSP (comme le out et le in). 15. Que pensez-vous de cette solution ? Est-il normal de polluer le JSP avec trop de code JAVA ? Quel est le problme dans ce cas ?

Manipulation 5 : JSP Formulaire et Servlet


Dans ce cas on va appeler la JSP via la Servlet. En effet le formulaire va interagir avec la Servlet qui ralise lopration de contrle et redirige la requte soit vers la JSP (valeur entire comprise entre 1 et 10) soit vers la page derreur (autres valeurs)

Formulaire

ServletLimite

sendRedirect forward Erreur Boucle MaJsp3.jsp

Cas de lUtilisation dune Servlet Ecrire un formulaire identique au prcdent dans lequel i sera une variable introduire dans un champ. Laction doit pointer vers ServletLimite que vous avez cre Ecrire la ServletLimite sui doit lire la valeur du champ limite. Si la valeur introduite est ngative ou non entire (lutilisateur saisit une chine) elle doit rediriger vers la page derreur html qui affiche le message merci de saisir une valeur entre 1 et 10. Pour cela utiliser la mthode response.sendRendirect(urlAbsolue de la page derrreur) Si la limite est correcte rediriger vers la jsp MaJsp3 que vous avez dj cr. Utiliser la mthode suivante : getServletContext().getRequestDispatcher("/TPDL/MaJsp3.jsp").forward(req,res);

Questions
16. Quel est le rle de la Servlet ? 17. Quel est le rle des Jsp ? 18. O la JSP rcupre t-elle la valeur de limite ? 19. Revenir vers la partie prcdente et externaliser tout le code HTML des Servlets 20. La Servlet joue le rle de contrle et la JSP de Vue. Expliquer.

Cr par Saloua Ben Yahia

Page 8 sur 8