Développons en Java avec Eclipse 0.80.1 | |
Copyright (C) 2003-2008 Jean-Michel DOUDOUX | (date de publication : 26/12/2008) |
|
Le développement d'applications web est particulièrement adapté pour être réalisé avec Java notamment grâce à plusieurs API de Java EE et de nombreux frameworks open source comme Struts.
Plusieurs plug-ins d'Eclipse facilitent le développement de ce type d'applications.
Ce chapitre contient plusieurs sections :
Le plug-in WTP propose des fonctionnalités pour faciliter le développement d'applications Web.
Pour développer une application web, il est nécessaire de créer un projet de type « Web/Projet Web dynamique ». Ce type de projet est un projet Java qui va contenir une application serveur de type web.
Cliquez sur le bouton « Suivant »
Il faut saisir le nom du projet et le contexte de l'application. Il est possible de sélectionner la version de l'API servlet à utiliser dans le projet et modifier le serveur cible si plusieurs sont définis.
Si l'application doit être intégrée dans une archive de type EAR, il faut cocher la case demandant l'ajout de la webapp dans une telle archive.
Cliquez sur le bouton « Terminer ».
Le plus simple est de cocher « Mémoriser ma décision » et de cliquer sur le bouton « Oui » pour ouvrir la perspective J2EE.
Le nouveau projet est créé dans l'arborescence « Project Web dynamiques » de la vue « Explorateur de projects ». Cette vue permet d'avoir une présentation des projets selon les grandes familles de projets.
La vue « Explorateur de packages » permet d'avoir une vue plus concise du projet.
Pour ajouter une servlet au projet, il faut créer une nouvelle entité du type « Web/Servlet »
Cliquez sur le bouton « Suivant »
Il faut saisir le nom du package, de la servlet et les informations concernant la classe de la servlet : il suffit simplement de saisir le package qui va contenir la servlet et de cliquer sur le bouton « Suivant »
La page suivante de l'assistant permet de saisir sa description, ses paramètres et son url de mapping si celle proposée par défaut ne convient pas. Cliquez sur le bouton « Suivant ».
La page suivante de l'assistant permet de préciser les membres qui seront générés dans la servlet.
Pour générer la servlet, il suffit de cliquer sur le bouton « Terminer ».
Il suffit alors de saisir le code de la servlet.
Pour éliminer l'avertissement, il suffit de demander la génération d'un identifiant en cliquant sur la petite ampoule jaune.
Si la source n'est pas sauvegardée, un message de confirmation de la sauvegarde est proposé à l'utilisateur.
Cliquez sur le bouton "Oui".
Ce message d'erreur apparaît si le répertoire cible de la compilation n'existe pas.
L'identifiant est généré et inséré dans le code de la servlet. Il ne reste plus alors qu'à écrire le code des traitements de la servlet.
Exemple : |
package com.jmd.test.wtp;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class for Servlet: HelloServlet
*
*/
public class HelloServlet extends javax.servlet.http.HttpServlet
implements javax.servlet.Servlet {
/**
*
*/
private static final long serialVersionUID = 341173098392449924L;
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public HelloServlet() {
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Bonjour</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>Bonjour</H1>");
out.println("</BODY>");
out.println("</HTML>");
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
* HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
}
} |
Lors de la sauvegarde de la servlet, le descripteur de déploiement est enrichi avec la déclaration de la servlet.
Exemple : |
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>TestWebApp</display-name>
<servlet>
<description>
</description>
<display-name>HelloServlet</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.jmd.test.wtp.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app> |
Pour ajouter une JSP, il faut sélectionner l'élément « Projet Web Dynamic/WebContent » et créer une nouvelle entité du type " Web/JSP ".
Il suffit alors de saisir le nom du fichier qui va contenir la JSP et de cliquer sur le bouton « Suivant ».
Sélectionnez le modèle à utiliser et cliquez sur le bouton "Terminer" pour créer le fichier.
L'éditeur de code s'ouvre avec le fichier créé. Cet éditeur propose plusieurs assistants pour la rédaction du code de la JSP
Par exemple pour un tag HTML, il suffit de saisir le début du tag et d'appuyer sur la combinaison de touches Ctrl+espace
L'assistant permet aussi de saisir les attributs d'un tag.
L'assistant propose aussi des modèles
L'assistant propose la complétude de code Java dans les scriptlets.
Il est nécessaire de définir un serveur en utilisant l'assistant de création d'entité de type « Serveur/Serveur ».
Il est aussi possible de créer un nouveau serveur en utilisant l'option « Nouveau/Serveur » du menu contextuel dans le vue « Serveurs »
Un assistant permet de saisir les informations concernant le nouveau serveur.
Par exmeple pour Tomcat, s électionnez la version de Tomcat installée et cliquez sur le bouton « Suivant »
Sélectionnez le projet puis cliquez sur le bouton « Ajouter ».
Cliquez sur le bouton « Terminer »
L'option « Ouverture » du menu contextuel sur le serveur permet d'obtenir des informations sur ce dernier.
L'onglet « Modules » permet d'obtenir la liste des applications installées sur le serveur.
Dans la vue "Serveurs", il est possible de supprimer un serveur en le sélectionnant dans la vue « Serveurs » et en utilisant l'option « Supprimer » du menu contextuel.
Pour lancer un serveur, il y a plusieurs solutions après avoir sélectionné ce serveur :
Le serveur est lancé en arrière plan
Les informations de démarrage du serveur sont affichées dans la vue « Console »
Il suffit alors d'ouvrir un navigateur et de saisir l'url de la servlet pour permettre son affichage
Il est possible de définir un serveur par défaut pour le projet dans les propriétés de ce dernier.
Il suffit alors de sélectionner le serveur précédemment défini, de cliquer sur le bouton « Appliquer » puis sur le bouton « OK ».
Si des modifications sont apportées à l'application alors que le serveur la concernant est lancé, le contexte est automatiquement rechargé si l'option de la webapp prévoie un rechargement automatique .
Sélectionnez l'option " Publier sur le serveur " du menu contextuel du serveur.
L'état passe alors à " Synchronisé "
Pour les exécutions suivantes, il est possible d'utiliser l'option « Executer en tant que/Exécution sur le serveur » pour lancer le serveur et ouvrir le navigateur intégré d'Eclipse avec l'url de l'application
Le plug-in Lomboz propose des fonctionnalités pour faciliter le développement d'applications de type web dans un projet de type « Java / Lomboz J2EE Wizard / Lomboz J2EE Project ». La configuration de Lomboz et la création d'un tel projet est détaillé dans le chapitre "".
Cette section va utiliser Lomboz avec JBoss et Tomcat.
Version utilisée dans cette section |
|
Eclipse |
2.1.2 |
J2RE |
1.4.2_02 |
Lomboz |
2.1.2 |
JBoss |
3.0.6 |
Tomcat |
4.1.18 |
Une webapp est contenue dans un module web. Si un tel module n'a pas été ajouté lors de la création du projet ou si il est nécessaire d'en ajouter un nouveau, il faut créer une nouvelle entité de type "Autre / Java / Lomboz J2EE Wizards / Lomboz J2EE Module".
Sur l'onglet « Web module » de la page de l'assistant, il suffit de suivre les indications précisées dans la section de création d'un nouveau projet pour ajouter un nouveau module web.
Il faut créer une nouvelle entité du type « Autres / Java / Lomboz J2EE Wizards / Lomboz HTML Wizard ».
Il faut sélectionner le répertoire ou sera stocké le fichier, saisir le nom du fichier et cliquer sur le bouton « Fin ».
Le fichier créé est ouvert dans un éditeur dédié.
L'éditeur propose une assistance à la rédaction du code pour les tags en appuyant sur les touches "Ctrl+Espace".
Il propose aussi une assistance pour la saisie des attributs d'un tag.
Il faut créer une nouvelle entité du type « Autres / Java / Lomboz J2EE Wizards / Lomboz JSP Wizard ».
Il faut sélectionner le répertoire, saisir le nom de la JSP et cliquer sur le bouton « Suivant ».
La page suivante de l'assistant permet de saisir des informations concernant la nouvelle JSP. Un clic sur le bouton « Add » permet d'ouvrir une boite de dialogue demandant les paramètres du bean à ajouter :
Il suffit de cliquer sur le bouton « Fin » pour générer la fichier et l'ouvrir dans l'éditeur.
L'éditeur propose une coloration syntaxique des éléments de la JSP et une assistance à la rédaction du code en appuyant sur les touches "Ctrl+Espace".
Lors de la sauvegarde du fichier, la JSP est compilée et les éventuelles erreurs sont signalées :
Il suffit alors de corriger les erreurs signalées et de sauvegarder le fichier.
Il faut créer une nouvelle entité du type « Autres / Java / Lomboz J2EE Wizards / Lomboz Servlet Wizard ».
La première page de l'assistant permet de saisir les informations générales sur la nouvelle servlet notamment son package, son nom, ces modificateurs et les méthodes qui doivent être générées.
Pour créer une servlet, il faut absolument que le fichier servlet.jar soit dans le classpath du projet, sinon un message d'erreur est affiché.
Une fois toutes les informations saisies, il suffit de cliquer sur le bouton « Suivant » pour accéder à la seconde page de l'assistant.
Cette page permet de saisir les informations de la servlet pour enrichir le fichier web.xml. Pour sélectionner le module web qui va contenir la servlet, il faut cliquer sur le bouton « Browse » :
Il suffit alors de sélectionner le module web et de cliquer sur le bouton « Ok ».
La saisie du nom de la servlet et du mapping URL est obligatoire.
Pour ajouter un paramètre à la servlet, il suffit de cliquer sur le bouton « Add » et de renseigner le nom et la valeur du paramètre dans la boîte de dialogue qui s'ouvre puis de cliquer sur le bouton « OK ».
Pour créer la servlet, il suffit enfin de cliquer sur le bouton « Fin ».
L'éditeur de code s'ouvre avec le source de la servlet créée.
Le fichier WEB-INF/web.xml est automatiquement modifié par Lomboz pour tenir compte des informations concernant la nouvelle servlet :
Exemple : |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<web-app>
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.moi.test.lomboz.web.TestServlet</servlet-class>
<display-name>servlet_de_test</display-name>
<description>Ma servlet de test</description>
<init-param>
<param-name>param1</param-name>
<param-value>valeur1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
</web-app> |
Pour tester une webapp, il faut démarrer le serveur d'application et déployer l'application sur le serveur.
Pour cela, il faut utiliser la vue « Lomboz » en appuyant sur le bouton dans la barre d'outils.
Cette vue possède plusieurs boutons pour réaliser certaines taches :
Lancer le serveur |
|
Arrêter le serveur |
|
Déployer le module dans le serveur |
|
Supprimer le module du serveur |
|
Permet de rafraîchir la vue |
Pour lancer un serveur, il suffit de le sélectionner dans l'arborescence et de cliquer sur le bouton correspondant ou d'utiliser l'option « Debug server » ou « Run server » du menu contextuel.
Lors du premier lancement, un boîte de dialogue demande si le serveur doit devenir le serveur par défaut du module.
La progression du démarrage du serveur web Tomcat est affichée dans la vue « Console ».
Pour vérifier que Tomcat est lancé, il suffit d'ouvrir un navigateur et de saisir l'url http://localhost:8080
Avec Tomcat, il faut le redémarrer après le deploiement d'une webapp sinon un message d'erreur est signalé lors de l'appel de la webapp dans le navigateur.
Pour résoudre le problème manuellement, il faut arrêter le serveur et le lancer de nouveau.
Pour résoudre automatiquement ce problème, il suffit de changer les paramètres de lomboz
Il faut cocher la case à cocher "Restart server after deploy (Tomcat)" et cliquer sur le bouton "OK ".
Il est possible que certaines erreurs empêchent le démarrage de la webapp.
Exemple :
Pour résoudre ce problème, il faut modifier dans le fichier web.xml l'ordre du tag web-app/servlet/servlet-class pour le mettre après le tag web-app/servlet/description
Pour accéder aux entités qui composent la webapp, il suffit de saisir l'url correspondante dans le navigateur.
Exemple avec la JSP d'accueil de la webapp
Exemple avec la servlet (attention, le mapping url a été modifié en /servlet dans le fichier web.xml)
Exemple avec le fichier HTML
|