Groupe Eyrolles, 2005, ISBN : 2-212-11406-0
10 L atelier MyEclipse Eclipse facilite considérablement le développement Java en équipe. Son puissant éditeur, associé à des fonctionnalités de complétion de code, de compilation incrémentale et de construction et de test des livrables, ainsi que son riche débogueur, en font une plate-forme professionnelle pour réussir des projets en Java. Comme vous avez pu vous en rendre compte, il n est toutefois pas adapté dans son édition standard, sans add-in, à des développements Stand-Alone, qui nécessitent des outils dédiés. D autres types de frameworks et d autres technologies, comme les servlets et les JSP, voir les EJB, doivent lui être associés. Fruit d un packaging de nombreux plug-in existants, MyEclipse, de la société Genuitec, est justement conçu pour répondre à ces besoins d une plate-forme complète et progressive dédiée au support du développement Web. Après un rappel des principales fonctionnalités de MyEclipse et des notions fondamentales de projets Web/J2EE et des descripteurs associés, vous ferez connaissance avec l outillage Web du plug-in MyEclipse. Vous le mettrez ensuite en pratique en réalisant vous-même un projet Web, depuis son développement jusqu à son déploiement sur le serveur Apache Tomcat. Rappels sur MyEclipse MyEclipse dispose d assistants personnalisés pour la création et le développement de ressources Web complètement intégrés à l éditeur Java d Eclipse (voir le chapitre 3) : éditeurs HTML et de JSP permettant un affichage en mode preview des pages Web ; éditeurs de ressources XML/XSL ;
268 Développement Web avec MyEclipse PARTIE III assistants de création de modules Web (servlets/jsp) ; assistants de création et de synchronisation des descripteurs de déploiement web.xml ; outils de déploiement, de test et de débogage de ressources Web, avec : déploiement direct de l environnement MyEclipse vers l environnement serveur choisi (plus de vingt serveurs supportés, dont JBoss, Apache Tomcat et WebSphere/ WebLogic) ; contrôle du serveur Web ou d applications (arrêt/relance) ; débogage à chaud de ressources JSP et Java ; support évolué de certains frameworks standards, incontournables dans un développement Web, comme Struts/JSF ou Hibernate. MyEclipse fournit en outre un éditeur de formatage de code incluant un correcteur syntaxique fournissant en temps réel le résultat de l analyse syntaxique de la ressource Web développée. Le concept de projet MyEclipse Avant de passer à la mise en œuvre de l outillage Web MyEclipse, un rapide rappel sur les notions fondamentales de projets WAR et EAR préludes à un déploiement sur le populaire serveur Apache Tomcat est nécessaire. Projets WAR et EAR Avant d entrer dans la mise en œuvre concrète d un développement Web avec MyEclipse, cette section dresse un rapide état des lieux des notions de projets WAR (Web application Archive) et EAR (Enterprise Application ARchive). Nous supposons que MyEclipse version 3.8.5 est correctement installé (voir la procédure en annexe). Nous supposons également convenablement installé et configuré le serveur Apache Tomcat 5.0, qui va servir de cadre à toute cette partie III. Nous examinons un peu plus loin dans ce chapitre la configuration de ce serveur à l aide du plug-in MyEclipse. Projets d entreprise La spécification J2EE définit la structure d exécution d une application d entreprise comme une collection de modules J2EE et de fichiers de ressources requis par ces mêmes modules. Il existe deux types de modules : Les modules Web, qui représentent une archive Web (WAR). Les modules EJB, qui représentent une archive EJB (JAR).
L atelier MyEclipse CHAPITRE 10 269 Un module Web fournit des services d IHM Web. L utilisateur accède aux services métier par le biais des modules EJB sous-jacents. La spécification J2EE définit l archive EAR comme l unité de déploiement d un projet J2EE standard, tout en permettant aux éditeurs de serveurs d applications de supporter de manière additionnelle d autres formats de déploiement, comme les modules Stand-Alone WAR et les JAR associés aux EJB déployés. Le modèle de projet MyEclipse suit les mêmes spécifications J2EE, un module de projet Web MyEclipse étant l équivalent à l exécution de la notion de module Web J2EE, et un module de projet EJB étant similaire à la notion de module J2EE EJB. Ces deux types de modules MyEclipse supportent des métadonnées spécifiques et des dépendances projet optionnelles (voir plus loin dans ce chapitre). Le modèle de projet d entreprise MyEclipse est l équivalent du modèle d application d entreprise J2EE. Il ne contient par de code spécifique aux projets Web et EJB mais maintient des références vers les modules projet. Fichiers EAR Actuellement, les fichiers EAR ne servent qu à regrouper différents modules pour former une même entité. Rien n est prévu pour prendre en compte la configuration des objets permettant l accès par l application à des ressources telles qu une base de données (pool de connexions, JDBC pour DataSource, etc.), une système de message (JMS), etc. Pour lever une partie de ces limites, les serveurs d applications commerciaux proposent souvent des mécanismes propriétaires en attendant une évolution des spécifications. Projets Web Un projet Web MyEclipse, ou plus généralement un projet Web sous Eclipse, est un projet Java qui inclut des métadonnées. Ces dernières définissent la nature Web du projet ainsi qu une structure de répertoires conforme à la norme J2EE 1.4 WAR (Web ARchive). La figure 10.1 illustre un projet Web «type» reconnaissable à son arborescence et à ses bibliothèques de support au développement Web. Remarquez la présence d un nouveau menu MyEclipse dans la barre de menus d Eclipse. Le projet MonPremierProjetWeb est un projet Web contenant deux sous-répertoires caractéristiques : src, qui contient le code source du projet (packages Java, classes et interfaces) et WebRoot, qui est la racine de l arborescence du projet. Ce répertoire racine contient à son tour deux sous-répertoire et un fichier descripteur : META-INF. Contient un fichier MANIFEST.MF comportant les informations nécessaires au fichier JAR, afin qu il puisse trouver tous les composants de l application au moment voulu, lors d une requête, par exemple. WEB-INF. Contient un fichier web.xml, qui est le descripteur de déploiement du contexte. Il comporte tous les paramètres de configuration utilisés par le contexte.
270 Développement Web avec MyEclipse PARTIE III Figure 10.1 Vue de l environnement Web MyEclipse web.xml. C est le fichier descripteur de déploiement de l application Web déployée au format WAR (Web ARchive). Contexte Un contexte constitue, pour chaque servlet d une même application Web, une vue de son fonctionnement. Une application Web peut être composée des éléments suivants : servlets ; pages JSP ; classes Java utilitaires ; documents statiques (pages HTML, feuilles de styles, etc.) ; Beans et applications clientes ; méta-informations décrivant la structure de l application. Grâce au contexte, il est possible d accéder à chacune des ressources de l application Web correspondant au contexte. À une application Web correspond un et un seul contexte, et chaque contexte est propre à une application. Il n est donc pas possible de partager des ressources entre applications différentes. Le tableau 10.1 récapitule les fonctions des sous-répertoires WebRoot et des ressources liées.
L atelier MyEclipse CHAPITRE 10 271 Tableau 10.1 Ressources d une application Web Ressource WAR web-root WEB-INF/ WEB-INF/classes WEB-INF/lib web.xml Description Racine ou base à partir de laquelle l ensemble des ressources du projet Web (pages HTML, feuilles de style CSS, JSP, JAR, etc.) sont localisées. Sous répertoire du répertoire racine web-root contenant des ressources de l application non publiques, comme les descripteurs de déploiement, les bibliothèques de balises, les classes Java compilées, etc. Sous-répertoire de WEB-INF contenant le résultat des classes Java compilées du projet à partir du répertoire src. À l exécution, ces ressources compilées sont accessibles à partir de la variable classpath. Sous-répertoire de WEB-INF contenant les fichiers JAR du projet Descripteur de déploiement et d exécution définissant les ressources Web J2EE, comme les servlets et les balises personnalisées (tag library). MyEclipse utilise et met à jour ce fichier en fonction du développement du projet. Pour être plus complet, ajoutons que MyEclipse inclut deux autres fichiers META et le répertoire.myeclipse. Le fichier.mymetadata est un fichier META au format XML, qui définit des informations spécifiques MyEclipse, comme la localisation du répertoire web-root et d autres détails requis par la «panoplie» Web de MyEclipse. Ce fichier doit être traité avec la même importance que les fichiers.project et.classpath utilisés par Eclipse, surtout lors de l archivage par CVS. Le répertoire optionnel.myeclipse est un espace de stockage temporaire, par exemple de fichiers JSP compilés, et ne peut donc être archivé par CVS. Personnalisation de l environnement Web MyEclipse MyEclipse fournit un ensemble de préférences personnalisables pour agir sur le développement de projets Web. Pour y accéder, sélectionnez Fenêtre, Préférences, MyEclipse, J2EE Project et Web Project depuis la barre de menus d Eclipse. La page illustrée à la figure 10.2 s affiche. Elle comporte les onglet suivants : Template, qui permet de modifier le nom du répertoire Web racine par défaut (WebRoot), étant entendu que seuls les nouveaux projets Web sont affectés par cette modification. Build Path, qui permet d ajouter le répertoire WEB-INF/lib/*.jar au chemin de compilation du projet Web (build-path). Deployment, qui permet d agir sur la stratégie de dépendance des projets Java déployés ainsi que sur le déploiement des bibliothèques, comme illustré à la figure 10.3.
272 Développement Web avec MyEclipse PARTIE III Figure 10.2 Options de paramétrage du projet Web MyEclipse Figure 10.3 Préférences de déploiement de projet Web
L atelier MyEclipse CHAPITRE 10 273 Ce concept de dépendance des bibliothèques déployées fait appel au partitionnement d une application entre un projet Web MyEclipse principal et un ou plusieurs projets Java dont le projet Web peut dépendre (option Propriétés du projet Web puis Chemin de compilation Java et onglet Projets). Il permet une meilleure réutilisation des services offerts par un autre projet. MyEclipse propose trois stratégies pour définir comment analyser des projets Java reliés durant le déploiement de l application Web. Le tableau 10.2 fournit une synthèse de ces stratégies. Tableau 10.2 Stratégies MyEclipse de déploiement des projets Stratégie Always Jar dependent Java projects and merge into the deployment Use Smart Deployment for dependent Java projects Ignore dependent Java projects Description Cette stratégie de déploiement informe le service de déploiement de créer les archives JAR à partir de chaque projet dépendant Java. Les fichiers JAR résultants sont fusionnés dans le répertoire de déploiement WEB-INF/lib. Les fichiers JAR sont créés avec le nom du projet dont ils dépendent avec l extension.jar. Deux cas se présentent selon le mode de déploiement choisi : 1. Lorsque le projet principal est déployé au format WAR packagé, ses projets dépendants sont packagés sous la même forme JAR et sont fusionnés avec le contenu du répertoire du projet Web WEB-INF/lib. 2. Lorsque le projet Web est déployé au format «exploded WAR» (voir plus loin), la compilation de sortie de chaque projet dépendant est fusionnée avec la compilation de sortie du projet Web principal. Cette configuration permet au processus déployeur Sync-on-Demand de détecter les modifications des sources de chaque projet dépendant et de synchroniser dynamiquement les modifications avec l état du projet Web déployé. Apache Tomcat, WebSphere et WebLogic supportent cette fonctionnalité de rechargement à chaud des classes déployées. Cette option précise au service de déploiement de ne pas tenir compte des projets dépendants pendant l opération de déploiement. La conséquence de cette stratégie est que votre application déployée peut rencontrer le message d erreur ClassNot FoundExceptions. Votre projet au sein de l espace de travail MyEclipse se compile toutefois normalement. Développement d un premier projet Web avec MyEclipse Afin de mettre en pratique ces concepts, vous allez créer votre premier projet Web avec MyEclipse. Cela vous permettra d explorer les fonctionnalités de support au développement Web sous Eclipse. Vous mettrez en œuvre les étapes de développement suivantes : 1. Construction d une ressource JSP destinée à recueillir les informations de connexion et édition sous l éditeur MyEclipse. 2. Construction d une servlet de traitement LoginServletTask destinée à effectuer le traitement de contrôle des informations.
274 Développement Web avec MyEclipse PARTIE III 3. Connexion à la base webstock via le driver JDBC MySQL et accès à la table WebStock Access. 4. En cas de succès, appel à l objet RequestDispatcher pour le transfert du contrôle à une autre servlet de traitement, LoginSuccess. 5. Déploiement/test/débogage sous MyEclipse de l application Web déployée. Création et configuration d un projet Web avec MyEclipse Pour concevoir un développement Web, il importe de préparer la structure et l environnement propre à ce type de développement : 1. Pour créer un projet Web avec MyEclipse, sélectionnez Fichier, Nouveau et Projet à partir de la barre de menus d Eclipse, puis sélectionnez dans la liste qui s affiche l assistant de création de projet Web (voir figure 10.4). Figure 10.4 L assistant de création de projet Web MyEclipse 2. Cliquez sur Suivant, et entrez les informations suivantes dans la fenêtre de configuration du projet : Project Name : LoginServlet. Source Folder : src. Web Root Folder : WebRoot. Context root Folder : /LoginServlet (ce paramètre désigne le contexte utilisé par le service de déploiement MyEclipse lors du déploiement du projet Web, par défaut le nom du projet).
L atelier MyEclipse CHAPITRE 10 275 J2EE Specification Level : J2EE 1.4 (utilisez ce niveau de spécification pour les serveurs Apache Tomcat 5.x et JBoss 4.x). Laissez les autres options inchangées. 3. Cliquez sur Fin. la perspective MyEclipse dédiée est automatiquement ouverte. Elle est personnalisable par le biais du menu Personnaliser la perspective d Eclipse. 4. Créez un package Java via Nouveau et Package, puis, dans l assistant de création de package, entrez com.webstock.login. Cliquez sur Fin. Votre projet est à présent configuré pour les autres étapes du développement. Création d une page d accueil Vous allez construire une page d accueil standard index.html pour l application. Cela vous permettra de faire connaissance avec l éditeur HTML intégré de MyEclipse et d avoir un aperçu de ses possibilités. 1. Pressez Ctrl+N, et sélectionnez l assistant de création de page HTML (Create a New HTML page) sous le nœud Web. 2. Cliquez sur Suivant, et saisissez les informations suivantes : File Path : /LoginServlet/WebRoot (par défaut). File Name : index.html. Figure 10.5 La page index.htm dans l éditeur HTML MyEclipse
276 Développement Web avec MyEclipse PARTIE III Doctype : valeur par défaut. Template to use : choisissez le modèle default HTML Template. 3. Cliquez sur Fin. La page index.html, symbolisée dans l arborescence du projet par l icône ci-contre, est créée sur le workbench Eclipse, comme illustré à la figure 10.5. Remarquez la présence de trois modes au bas de la page : Source : mode par défaut pour l édition de la page. Preview : permet de voir rapidement l état de la page dans un navigateur. Design : pour la conception de la page en mode WISIWYG. 4. Vous pouvez utiliser les options Cleanup Document, accessibles par clic droit dans l éditeur de la page d Eclipse, pour effectuer des opérations de formatage et des ajustements de style sur les balises et les attributs du document HTML (voir figure 10.6), ainsi que l option Format, accessible de la même façon. Figure 10.6 L'outil de formatage Cleanup 5. Cliquez sur le mode Design de la page. L atelier de conception et ses icônes associées s affichent, comme illustré à la figure 10.7. 6. Remplacez le texte proposé par le texte WebStock, et insérez le bitmap WebStock.gif dans la page à l aide de l icône ci-contre de la barre d outils. 7. Cliquez sur l icône ci-contre pour créer un lien vers la JSP Login.jsp (voir figure 10.8). Votre page doit ressembler à celle illustrée à la figure 10.9. L étape de conception de la page HTML d accueil étant terminée, vous allez passer à l utilisation d outils de conception spécifiquement dédiés aux ressources HTML.
L atelier MyEclipse CHAPITRE 10 277 Figure 10.7 L atelier de conception et de design HTML MyEclipse Figure 10.8 Création d un hyperlien vers une ressource Web du projet Figure 10.9 Conception de la page d accueil de l application WebStock
278 Développement Web avec MyEclipse PARTIE III Création d une ressource JSP Vous allez créer la JSP login.jsp destinée à recueillir et envoyer les informations de connexion à la servlet LoginServletTask. 1. Faites un clic droit sur le dossier WebRoot, et sélectionnez Nouveau, Autre, J2EE, Web et JSP à partir du menu contextuel. 2. Cliquez sur Suivant. L assistant de création de page JSP s affiche. Renseignez les informations de localisation de la page (File Path), de nom de la page et de modèle à utiliser de la façon suivante (voir figure 10.10). Figure 10.10 L assistant de création de page JSP MyEclipse File Name : Login.jsp. Template to use : Default JSP Template (à ce stade, le framework Struts n est pas utilisé). 3. Cliquez sur Fin. Localisation de la page JSP La localisation de la page JSP sous le dossier web-root est requise de manière à permettre à l éditeur MyEclipse de fournir la complétion de code, ainsi que les fonctionnalités de validation. Cela permet en outre au service de déploiement MyEclipse de déployer la JSP.
L atelier MyEclipse CHAPITRE 10 279 Édition de la page JSP À ce stade, vous allez construire votre page d identification à l aide de l éditeur MyEclipse. 1. Ouvrez la page Login.jsp dans l éditeur MyEclipse en double-cliquant sur le fichier (l éditeur MyEclipse est configuré par défaut pour l ouverture de ressources de type.jsp). 2. Substituez au contenu compris entre les balises <html> et </html> le contenu suivant : <HTML> <HEAD> <TITLE>Page d'identification</title> </HEAD> <BODY> <CENTER> <BR> <BR><H2>Login Page</H2> <BR> <BR>Saisissez votre nom et votre mot de passe<br> <BR> <FORM METHOD=POST ACTION="/LoginServlet/servlet/LoginServletTask"> <TABLE> <TR> <TD>Nom Utilisateur :</TD> <TD><INPUT TYPE=TEXT NAME=userName></TD> </TR> <TR> <TD>Mot De Passe :</TD> <TD><INPUT TYPE=PASSWORD NAME=password></TD> </TR> <TR> <TD ALIGN=RIGHT COLSPAN=2> <INPUT TYPE=SUBMIT VALUE=Login></TD> </TR> </TABLE> </FORM> </CENTER> <% out.println("date courante: " + Calendar.getInstance().getTime()); %> </BODY> <% out.println("date courante: " + Calendar.getInstance().getTime()); %> </HTML>
280 Développement Web avec MyEclipse PARTIE III 3. Au passage, vous pouvez apprécier les capacités de complétion de code HTML de MyEclipse en positionnant votre curseur sur le début de la balise recherchée puis en pressant Ctrl+Espace (voir figure 10.11). Figure 10.11 Complétion des balises HTML 4. Dans la zone d import, saisissez le code suivant en profitant des capacités de complétion du code JSP : <%@ page import="java.util.calendar" %> 5. Vous pouvez configurer l éditeur de JSP MyEclipse en faisant un clic droit dans l éditeur JSP et en sélectionnant Préférences dans le menu contextuel. Vous avez la possibilité de personnaliser la syntaxe colorée proposée et le style de texte en fonction du type de contenu ainsi que de paramétrer les différents modèles JSP proposés (directives, déclarations et expression JSP, etc.), comme l illustre la figure 10.12. 6. Vous pouvez aussi modifier la configuration des préférences de validation des ressources Web de MyEclipse au niveau système, par le biais du menu Préférences du menu Eclipse ou au niveau du projet par le biais du menu contextuel du projet, comme illustré à la figure 10.13. 7. Sauvegardez votre page (Ctrl+S) : votre ressource Login.jsp est désormais prête. Pour vous en assurer, cliquez sur Preview : votre page doit ressembler à celle illustrée à la figure 10.14.
L atelier MyEclipse CHAPITRE 10 281 Figure 10.12 Préférences de l éditeur JSP MyEclipse Figure 10.13 Configuration des préférences de validation MyEclipse
282 Développement Web avec MyEclipse PARTIE III Figure 10.14 La vue Preview de la page Login.jsp Création de la servlet LoginServletTask La ressource servlet LoginServletTask est chargée de la validation du formulaire. Pour la créer, procédez de la façon suivante : 1. Cliquez sur le package com.webstock.login, puis pressez Ctrl+N. 2. Sélectionnez J2EE, Web et Servlet dans la liste, puis saisissez LoginServletTask dans le champ Nom. 3. Cliquez sur Suivant puis sur Fin. Le fichier descripteur est mis à jour automatiquement en fonction des informations de cette servlet, notamment les balises <servlet> et <servlet-mapping>. 4. Saisissez le code suivant dans cette servlet : package com.webstock.login; import java.sql.*; import java.io.ioexception; import java.io.printwriter; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset;
L atelier MyEclipse CHAPITRE 10 283 import java.sql.sqlexception; import java.sql.statement; import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; /** * @author djafaka * * TODO Pour changer le modèle de ce commentaire de type généré, allez à : * Fenêtre - Préférences - Java - Style de code - Modèles de code */ public class LoginServletTask extends HttpServlet { /** * Constructor of the object. */ public LoginServletTask() { super(); /** * Destruction de la servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here /** * La méthode doget de la servlet. <br> * * * @param request la requete envoyee par le client au serveur * @param response la reponse envoyee par le serveur au client * @throws ServletException si erreur * @throws IOException si erreur */ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { sendloginform(response, false); private void sendloginform(httpservletresponse response, boolean witherrormessage) throws ServletException, IOException {
284 Développement Web avec MyEclipse PARTIE III response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>login</title>"); out.println("</head>"); out.println("<body>"); out.println("<center>"); if (witherrormessage) out.println("la connexion a echoue. Reessayer SVP.<BR>"); out.println("<br>"); out.println("<br><h2>login Page</H2>"); out.println("<br>"); out.println("<br>entrez votre nom de connexion et votre mot de passe."); out.println("<br>"); out.println("<br><form METHOD=POST>"); out.println("<table>"); out.println("<tr>"); out.println("<td>nom :</TD>"); out.println("<td><input TYPE=TEXT NAME=userName></TD>"); out.println("</tr>"); out.println("<tr>"); out.println("<td>mot de Passe :</TD>"); out.println("<td><input TYPE=PASSWORD NAME=password></TD>"); out.println("</tr>"); out.println("<tr>"); out.println("<td ALIGN=RIGHT COLSPAN=2>"); out.println("<input TYPE=SUBMIT VALUE=Login></TD>"); out.println("</tr>"); out.println("</table>"); out.println("</form>"); out.println("</center>"); out.println("</body>"); out.println("</html>"); /** * Methode dopost de la servlet. <br> * * * @param request la requete envoyee par le client au serveur * @param la reponse envoyee par le serveur au client * @throws ServletException si erreur * @throws IOException si erreur */ public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException {
L atelier MyEclipse CHAPITRE 10 285 String username = request.getparameter("username"); String password = request.getparameter("password"); System.out.println("doPost"+userName); if (login(username, password)) { // Invocation du traitement de succes par le biais de // la servlet LoginSuccess RequestDispatcher rd = request.getrequestdispatcher("loginsuccess"); rd.forward(request, response); else { sendloginform(response, true); boolean login(string username, String password) { try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost/ webstock","root",""); System.out.println("Connexion en cours"); Statement s = con.createstatement(); String sql = "SELECT USERID FROM webstockaccess" + " WHERE NomUser='" + username + "'" + " AND MotDePasse='" + password + "'"; ResultSet rs = s.executequery(sql); if (rs.next()) { rs.close(); s.close(); con.close(); return true; rs.close(); s.close(); con.close(); catch (ClassNotFoundException e) { System.out.println(e.toString()); catch (SQLException e) { System.out.println(e.toString()); catch (Exception e) { System.out.println(e.toString()); return false; /**
286 Développement Web avec MyEclipse PARTIE III * Initiation de la servlet. <br> * * @throws ServletException si erreur */ public void init() throws ServletException { // A completer au besoin La servlet LoginServletTask essaie de faire correspondre les valeurs saisies dans le formulaire précédent de login et mot de passe avec celles des colonnes NomUser et MotDePasse stockées dans la table WebStockAccess. Lorsque l utilisateur saisit dans son navigateur l URL http://localhost:8080/loginservlet/login.jsp et qu il clique sur le bouton Login, la méthode doget est invoquée. Celle-ci appelle la méthode privée sendloginform, qui envoie la page HTML à l utilisateur pour se connecter. Cette méthode sendloginform possède deux arguments : un objet HttpServletResponse, que la méthode peut utiliser pour envoyer le résultat au navigateur, et un booléen. Le booléen est un drapeau, qui indique si le message d erreur doit être envoyé avec le formulaire. Ce message d erreur informe l utilisateur que le précédent login a échoué. Lorsque la servlet est appelée pour la première fois, aucun message n est bien sûr envoyé. Cela explique que la valeur false soit transmise en argument à la méthode sendloginform (voir dans l extrait la méthode doget). Après l envoi du formulaire à la servlet via l attribut ACTION="/LoginServlet/servlet/ LoginServletTask" et la transmission des paramètres à la servlet, la méthode login(user Name, password) est appelée via la méthode dopost de la servlet. Cette méthode retourne true ou false en fonction du résultat de la requête dans la base webstock par le biais de la table webstockaccess. En cas de succès, la requête est transmise à une autre servlet Login Success pour un traitement associé à la connexion au système. En cas d échec, la méthode dopost appelle à nouveau la méthode sendloginform avec un message d erreur sendlogin Form (response, true). Déploiement, test et débogage de l application LoginServlet Dans cette dernière étape, vous allez procéder au déploiement et au test de votre application Web sur le serveur Apache Tomcat. Le conteneur Web Tomcat est entièrement supporté via le connecteur MyEclipse. Vous devez d abord procéder pour cela à la configuration de ce connecteur et de l environnement du JDK qui sera utilisé pour lancer le serveur.
L atelier MyEclipse CHAPITRE 10 287 Configuration du connecteur Apache Tomcat Il existe trois étapes principales pour configurer un connecteur au serveur d applications : 1. Spécifier le serveur d applications. 2. Activer le connecteur. 3. Spécifier le JDK qui sera utilisé pour lancer le serveur. Spécification du serveur d applications 1. Sélectionnez le répertoire racine de votre installation serveur, ici Apache Tomcat 5.0, accessible à partir du menu Préférences d Eclipse, et cochez Enable Tomcat Server pour activer le connecteur et permettre au service de déploiement et de débogage MyEclipse de fonctionner (voir figure 10.15). Figure 10.15 Configuration du connecteur Apache Tomcat 5.0 2. Spécifiez l environnement du JDK utilisé pour lancer l instance du serveur. L information sur le JDK est spécifiée dans les préférences, comme illustré à la figure 10.16. 3. Cliquez sur Add pour ajouter une configuration, et saisissez un nom de JRE associé au répertoire racine de votre installation de JDK (ici c:\j2sdk1.4.2_05), comme illustré à la figure 10.17. 4. Cliquez sur OK, puis sélectionnez dans la liste Tomcat JDK Name. 5. Cliquez sur Appliquer puis OK.
288 Développement Web avec MyEclipse PARTIE III Figure 10.16 Configuration du JDK associé au serveur Tomcat (1/2) Figure 10.17 Configuration du JDK associé au serveur Tomcat (2/2) Mode de packaging J2EE avec MyEclipse Avant de déployer votre application Web, il importe de noter les deux modes de déploiement possibles dans l environnement MyEclipse, le mode standard J2EE et un mode spécifique.
L atelier MyEclipse CHAPITRE 10 289 MyEclipse peut en effet déployer des projets de types Web, EJB ou d entreprise pour n importe quel serveur d applications figurant dans le menu Préférences d Eclipse (nœud MyEclipse puis Application Servers), selon les deux modes de déploiement suivants : Packaged Archive Deployement. Ce modèle standard de déploiement J2EE consiste à packager les ressources de l application dans un seul fichier archive ZIP avec une structure interne conforme au modèle J2EE. Cette archive peut ensuite être déployée sur un serveur d applications cible par le biais de connecteurs dédiés. Ce type d archive ne supporte pas la compilation incrémentale ni la mise à jour automatique des archives, qui nécessitent un redéploiement périodique (synchronisation) de l application déployée avec les sources du projet MyEclipse. Exploded Archive Deployment. Non conforme à la spécification J2EE pour le packaging et le déploiement, ce mode dépend de certains serveurs d applications mais offre un certain nombre d avantages. Au lieu de créer et déployer un seul fichier archive, l intégralité des ressources de l application (répertoires et fichiers) est copiée par le connecteur du serveur d applications à un emplacement spécifique, appelé exploded archive. Le service de déploiement MyEclipse utilise la fonctionnalité Sync-on-Demand (littéralement synchronisation à la demande), qui permet de garder l ensemble des projets MyEclipse synchronisés avec les sources des projets MyEclipse correspondants, contrairement à l autre mode. Déploiement d un projet J2EE MyEclipse sur Apache Tomcat Étant donné le caractère Web de votre projet, qui ne nécessite pas de conteneur d EJB particulier, vous allez le déployer sur le serveur Apache Tomcat 5.0. Développé avec l appui de la fondation Apache, ce dernier est un moteur de servlets évolutif fiable, bien adapté à une utilisation professionnelle. La procédure de déploiement suivante peut évidemment être utilisée pour d autres serveurs, tels que JBoss : 1. Faites un clic droit sur votre projet LoginServlet, et sélectionnez MyEclipse puis Add and Remove Project Deployments à partir du menu contextuel. La page illustrée à la figure 10.18 s affiche. 2. Votre projet étant sélectionné dans la zone de liste Project, cliquez sur le bouton Add pour le déployer. La page illustrée à la figure 10.19 s affiche. 3. Sélectionnez le serveur Tomcat 5 dans la liste configurée à l étape précédente par le biais du menu Préférences d Eclipse, puis choisissez le mode par défaut Exploded Archive. Le déploiement va s effectuer automatiquement dans le répertoire dédié. 4. Cliquez sur Fin. Votre projet doit être normalement déployé avec succès. Vous pouvez le vérifier en consultant la zone Deployment Status (voir figure 10.18). 5. Cliquez sur OK pour quitter l assistant de déploiement.
290 Développement Web avec MyEclipse PARTIE III Figure 10.18 L assistant de déploiement MyEclipse Figure 10.19 Sélection du serveur d applications
L atelier MyEclipse CHAPITRE 10 291 Lancement de l application déployée MyEclipse fournit des fonctionnalités de contrôle du lancement et de l arrêt du serveur Tomcat ainsi que des fonctionnalité de débogage «à chaud» de l application déployée. Commencez par démarrer votre serveur Apache Tomcat : 1. Cliquez sur l icône ci-contre de la barre d outils Eclipse, puis sélectionnez Tomcat 5 et Start, comme illustré à la figure 10.20. Figure 10.20 Lancement de Tomcat à partir de la barre d outils d Eclipse 2. Le connecteur du serveur d applications redirige la sortie standard de l application vers la console MyEclipse, où vous pouvez suivre la séquence de démarrage du serveur, comme illustré à la figure 10.21. Figure 10.21 Affichage du résultat du lancement du serveur Tomcat 3. Après un lancement réussi du serveur Tomcat, vous pouvez dérouler votre application en mode Preview à partir de la page d accueil (voir figure 10.22). 4. Pour arrêter le serveur d applications, cliquez sur l icône ci-contre puis sur Tomcat 5 et Stop.
292 Développement Web avec MyEclipse PARTIE III Figure 10.22 Fonctionnement en mode Preview de l application LoginServlet Débogage de l application Web déployée MyEclipse étend le débogueur Eclipse pour supporter les points d arrêt à chaud des pages JSP. Cela rend pratiquement identique le débogage d une application Java et celui d une application J2EE. Vous pouvez donc saisir vos points d arrêt dans la marge de gauche de votre éditeur, aussi bien pour le code Java de votre application Web que pour l éditeur JSP de MyEclipse. Durant l exécution du serveur d applications, lorsque le contrôle de l exécution rencontre un point d arrêt, la perspective Débogage d Eclipse est invoquée, et l information de débogage associée est affichée (voir figure 10.23). Mode Debug Pour activer le mode Debug, vous devez positionner le mode Launch de Tomcat à Debug mode dans le menu Préférences d Eclipse.
L atelier MyEclipse CHAPITRE 10 293 Figure 10.23 Lancement de la perspective Débogage sous Eclipse En résumé Ce chapitre vous a permis de vous familiariser avec l environnement de développement et l outillage Web de MyEclipse, qui vient en complément de l IDE Eclipse. Vous avez pu mesurer toute la productivité en équipe apportée par cette suite personnalisée pour le développement Web, ainsi que l aide au test et au débogage d applications Web sur serveur Apache Tomcat. Vous poursuivrez cette prise en main de l environnement MyEclipse au chapitre suivant, consacré au développement Web à l aide de l outil XDoclet et à sa configuration dans Eclipse.