1 Objectif : 2 Installation de Tomcat 3 Exemples de Servlets et JSP 4
Transcription
1 Objectif : 2 Installation de Tomcat 3 Exemples de Servlets et JSP 4
TD GTR, printemps 2006. 1 4 CRÉATION D'UNE APPLICATION WEB Objectif : Ce td/tp a pour objectif de découvrir : un environnement serveur, appelé aussi container : (Tomcat), les JSP, essayer une Servlet, les Beans. 2 Installation de Tomcat Cette partie est à faire uniquement si votre poste ne dispose pas de Tomcat. 1. récupérer sur http://tomcat.apache.org/download-55.cgi : Core 5.5.16, windows Administration Web Application 5.5.16, zip 2. décompresser les deux archives dans votre répertoire de travail, 3. lancer l'exécutable ./bin/startup.bat. Normalement vous devriez avoir sur http://localhost:8080 la page d'accueil de Tomcat, 4. lisez la page d'accueil et suivez les instructions pour créer un compte administrateur (rôles admin ET manager). Dans le chier ./conf/tomcat-users.xml, assurez vous que : vous avez déclaré le role manager et admin, vous avez déclaré les mots de passe. 3 Exemples de Servlets et JSP Tout au long de ce td, il est fortement conseillé de consulter les aides sur : http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html http://java.sun.com/j2ee/1.4/docs/tutorial/doc/ 1. Dans les sections JSP Examples et Servlet Examples , exécutez les deux premiers JSP et regardez le code source. De même, pour les deux premières Servlets. 2. Expliquez la diérence principale entre une page JSP et une Servlet. 4 Création d'une application Web Nous allons créer un nouveau répertoire dans l'arborescence de Tomcat contenant notre nouvelle application Web. 1. Dans le répertoire ./webapps, créez un répertoire test. Dans ce répertoire, placez un chier Essai1.jsp contenant quelques lignes HTML, <html> <head> <title>JSP Test</title> </head> <body> .... </body> </html> 1 TD GTR, printemps 2006. 4 CRÉATION D'UNE APPLICATION WEB 2. à chaque application Web, est associé un chier de déploiement web.xml. Il contient les informations liées à son environnement et tout autre information (titre, ressources . . .). Écrivez un descripteur de déploiement. Pour ce faire : Créez le répertoire WEB-INF dans ./webapps/test. En vous inspirant de celui donné cidessous, créez votre propre descripteur. Par exemple : <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name> ... </display-name> <description> ... </description> </web-app> 3. faites connaître votre application via http://localhost:8080/manager/, 4. votre page doit être visible sur http://localhost:8080/test/Essai1.jsp 2 TD GTR, printemps 2006. 4 CRÉATION D'UNE APPLICATION WEB 4.1 JSP 1. Testez votre script JSP : modiez le pour qu'il ache les chires de 1 à 5 à l'aide d'une boucle. Par exemple on souhaite avoir : JSP Test 1 2 3 4 5 2. Cherchez le code source Java de la servlet correspondant à votre JSP (dans le répertoire ./work/) et consulter-le. Retrouver la partie de votre code JSP, expliquer. 4.2 Servlet Créer une servlet nommée Essai2.java dont le but est de : 1. lire un paramètre de requête HTTP, (utilisation de request.getParameter("...")) 2. le convertir en entier et le multiplier par 2, 3. modier votre JSP Essai1.jsp qui faisait une boucle en Essai2.jsp pour qu'elle accepte une borne supérieure pour la boucle en paramètre, 4. le transmettre à Essai2.jsp (utilisation de request.setAttribute("...")) et (utilisation de getServletContext().getRequestDispatcher("...").forward(request, response) ;, 5. compilez votre servlet et placez là dans le répertoire ./WEB-INF/classes/ de votre application Web. Pour compiler n'oubliez pas de mettre à jour le CLASSPATH avec ./common/lib/servlet.jar. 6. Mettez à jour le chier web.xml de telle sorte que votre servlet soit mappée sur run/Essai2. Il doit ressembler à : <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Mon appli Web</display-name> <description> Mon appli Web - TP Servlet/JSP </description> <servlet> ... </servlet> <servlet-mapping> ... </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> 7. créer un formulaire index.html pour invoquer votre servlet, 8. recharger votre site via le manager, et tester. 3 TD GTR, printemps 2006. 5 5 BEAN ET LES FORMULAIRES bean et les formulaires L'une des utilisations des bean est celle liée au traitement des formulaires. Cette section s'intéresse à la mise en place d'un bean an de recueillir des informations et montrer les notions de session. 5.1 Le formulaire Faire un formulaire demandant, le nom, l'email, et l'âge : <HTML> <BODY> <FORM METHOD=POST ACTION="SaveName.jsp"> ... <INPUT TYPE=SUBMIT> </FORM> </BODY> </HTML> 5.2 La bean 1. Créer un classe Java bean liée aux informations du formulaire. Si une donnée est absente, la remplacer par une valeur par défaut. 1 2 3 4 5 6 7 8 package beans ; public c l a s s UserData { S t r i n g username ; String email ; int age ; } // d é c l a r e r l e s s e t t e r e t g e t t e r , // ex : p u b l i c v o i d setAge ( i n t v a l u e ) 2. compiler la, et la placer dans ./WEB-INF/classes/beans/ 5.3 La page pour sauver les informations Créer une page SaveName.jsp qui va appeler la bean, et proposer un lien pour continuer sur la page NextPage.jsp On rappelle la déclaration de l'utilsation d'une bean : <jsp:useBean id="user" class="UserData" scope="session"/> <jsp:setProperty name="user" property="*"/> 5.4 La page pour acher le contenu de la bean Créer la page NextPage.jsp qui ache le contenu de la bean. 1. tester votre formulaire, 2. ouvrir un autre onglet (ou réentrer l'adresse dans le même buttineur) et ouvrir la page http://localhost:8080/test/NextPage.jsp. Expliquer les résultats observés, 3. fermer votre buttineur, ou ouvrez en un autre puis aller à http://localhost:8080/test/ NextPage.jsp. Expliquer 4 TD GTR, printemps 2006. 6 6 CORRECTION Correction 1. RS, 2. Une servlet est un programme Java qui -en général- peut contenir des instructions pour écrire du code HTML ; une page JSP est un document HTML qui embarque du code Java ; une page JSP sera transformée en servlet (code Java) puis compilée à la volée par le serveur Web. 3. Essai1.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSP Test</title> </head> <body> <h1>JSP Test</h1> <%int n=((Integer) request.getAttribute("ageDuCapitaine")).intValue(); for (int i=1; i<n; i++) {%> <p><%=i%></p> <%}%> <hr> <address><a href="mailto:[email protected]">Philippe Poulard</a></addr <!-- Created: Fri Nov 12 17:58:06 MET 2004 --> <!-- hhmts start --> Last modified: Fri Nov 12 17:58:43 MET 2004 <!-- hhmts end --> </body> </html> 4. Essai2.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /∗ ∗ Essai2 . j a v a ∗ ∗ Created on November 13 , 2004 , 3:24 PM ∗/ import j a v a x . s e r v l e t . ∗ ; import j a v a x . s e r v l e t . h t t p . ∗ ; / ∗∗ ∗ Reads a r e q u e s t parameter ∗ ∗ @author P h i l i p p e Poulard ∗/ public c l a s s E s s a i 2 extends H t t p S e r v l e t { / ∗∗ Handles t h e HTTP <code>GET</code> method . ∗ @param r e q u e s t s e r v l e t r e q u e s t ∗ @param response s e r v l e t response ∗/ protected void doGet ( H t t p S e r v l e t R e q u e s t r e q u e s t , H t t p S e r v l e t R e s p o n s e r e s p o n s e ) throws S e r v l e t E x c e p t i o n , j a v a . i o . IOException { // reads t h e r e q u e s t parameter and p a r s e s as i n t I n t e g e r captainAge = new I n t e g e r ( 2 ∗ I n t e g e r . p a r s e I n t ( r e q u e s t . getParameter ( " age −du− c a p i t a i n e " ) ) ) ; // s e t t h e c a p t a i n age r e q u e s t . s e t A t t r i b u t e ( " ageDuCapitaine " , captainAge ) ; // forward t h e HTTP r e q u e s t t o t h e JSP } t h i s . g e t S e r v l e t C o n t e x t ( ) . g e t R e q u e s t D i s p a t c h e r ( "/ E s s a i 1 . j s p " ) . f o r w a r d ( r e q u e s t , r e s p o n s e ) ; / ∗∗ Returns a s h o r t d e s c r i p t i o n o f t h e s e r v l e t . ∗/ public S t r i n g g e t S e r v l e t I n f o ( ) { return " Reads a r e q u e s t parameter " ; } } 5 TD GTR, printemps 2006. 6 CORRECTION 5. web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Mon appli Web</display-name> <description> Mon appli Web - TP Servlet/JSP </description> <servlet> <servlet-name>MonEssai</servlet-name> <display-name>Mon essai de mon appli Web</display-name> <description>Mon essai de servlet - TP Servlet/JSP</description> <servlet-class>Essai2</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MonEssai</servlet-name> <url-pattern>/run/Essai2</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app> 6. index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Mon appli Web</title> </head> <body> <h1>Mon appli Web</h1> <p>Entrez l'âge du capitaine :</p> <form method="get" action="run/Essai2"> <input type="text" name="age-du-capitaine" /> <input type="submit" name="Go" value="Vas-y" /> </form> </body> </html> 6.1 BEAN 1. GetName.html <HTML> <BODY> <FORM METHOD=POST ACTION="SaveName.jsp"> What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR> What's your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR> 6 TD GTR, printemps 2006. 6 What's your age? <INPUT TYPE=TEXT NAME=age SIZE=4> <P><INPUT TYPE=SUBMIT> </FORM> </BODY> </HTML> 2. UserName.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 p a c k a g e s beans ; public c l a s s UserData { S t r i n g username ; String email ; int age ; public void setUsername ( S t r i n g v a l u e ) { } username = v a l u e ; public void s e t E m a i l ( S t r i n g v a l u e ) { } email = value ; public void setAge ( int v a l u e ) { } } age = v a l u e ; public S t r i n g getUsername ( ) { return username ; } public S t r i n g getEmail ( ) { return e m a i l ; } public int getAge ( ) { return age ; } 3. SaveName.jsp <jsp:useBean id="user" class="UserData" scope="session"/> <jsp:setProperty name="user" property="*"/> <HTML> <BODY> <A HREF="NextPage.jsp">Continue</A> </BODY> </HTML> 4. NextPage.jsp <jsp:useBean id="user" class="UserData" scope="session"/> <HTML> <BODY> You entered<BR> Name: <%= user.getUsername() %><BR> Email: <%= user.getEmail() %><BR> Age: <%= user.getAge() %><BR> </BODY> </HTML> 7 CORRECTION