Mise en oeuvre des Servlets et des JSP

Évaluation de l'UE JEE

Le projet d'évaluation est disponible.

Quelques liens utiles

Apache Tomcat :
La documentation de Tomcat 7.x
http://tomcat.apache.org/tomcat-7.0-doc/
Le guide de développement
http://tomcat.apache.org/tomcat-7.0-doc/appdev
Servlets :
Les transparents du cours
sont disponibles
Les servlets chez JavaSoft
http://java.sun.com/products/servlet/
JavaDoc: L'API Servlet 2.5
http://java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/
JavaDoc: L'API Servlet 3.0
http://tomcat.apache.org/tomcat-7.0-doc/servletapi/
Java Server Page :
Les transparents du cours
sont disponibles
Les JSP chez JavaSoft
http://java.sun.com/products/jsp/
Le manuel de référence JSP 2.0 chez JavaSoft
http://java.sun.com/products/jsp/syntax/2.0/syntaxref20.html
L'API JSP 2.1
http://java.sun.com/products/jsp/2.1/docs/jsp-2_1-pfd2/
Les articles JSP de onjava.com
http://www.onjava.com/topics/java/JSP_Servlets

Le conteneur WEB Tomcat d'Apache

Charger, installer et tester

Commencez par récupérer le moteur de Servlets Tomcat [ou ici] (version 7.x non RPM, package core) et installez-le (décompressez l'archive). Rendez exécutables les scripts se trouvant dans le répertoire « bin » avec

cd apache-tomcat-*/
chmod u+x bin/*.sh

Lancez le serveur avec le script « startup.sh » du répertoire « bin ». Testez ensuite les exemples présents en vous connectant à l'adresse http://localhost:8080. Attention : commencez par les exemples de servlets puis les exemples en JSP 1.2 et laissez les exemples JSP 2.0 pour plus tard. N'oubliez pas, à la fin du TP, de stopper le moteur de servlets (commande « shutdown.sh »).

Préparer le manager

Dans un premier temps, vous pouvez sauter cette section.

Le manager est une application WEB permettant de contrôler les applications WEB déployées sur le moteur de servlets. Pour l'utiliser, vous devez créer un utilisateur (dans le moteur de Servlets) qui joue le rôle de manager.

Pour ce faire, modifiez la définition des utilisateurs (fichier conf/tomcat-users.xml) en ajoutant un rôle « manager » et faites en sorte que l'utilisateur « tomcat » ait ce rôle. Relancez le serveur Jakarta Tomcat (shutdown.sh puis startup.sh). Essayez de gérer les applications WEB avec l'application manager.

Faites de même pour le rôle admin et testez l'application d'administration du serveur tomcat.

Eclipse JEE et les applications WEB

Nous allons utiliser le plugin WTP qui est intégré par défaut dans Eclipse pour JEE. Pour ce faire, suivez ces étapes les unes après les autres :

  1. Lancer la version JEE de Eclipse.
  2. Vérifiez que le JRE par défaut est bien en version 1.6 ou supérieure.
  3. Dans le menu Windows/Preferences choissisez l'onglet « Server / Runtime Environments » et ajoutez un nouveau serveur local de type Apache Tomcat 7.
  4. Créez un nouveau projet de type « Web / Dynamic Web project » avec le nom monapp. Lors de la création prenez soin de lui associer le Target Runtime correspondant au serveur Apache Tomcat. A ce stade, votre projet doit ressembler à ceci :
    monapp
      | Deployment Descriptor      version agréable de web.xml
      + Java Ressources: src       les sources de votre projets
      |   | Apache Tomcat...       les librairies de Tomcat
      |   | EAR Libraries          (non utilisé)
      |   | JRE System Library     les libraires de WEB-INF/lib/
      | JavaScript Support
      | build/                     zone de travail)
      + WebContent                 votre application WEB)
      |   | META-INF               (le manifest)
      |   + WEB-INF                configuration de votre app.
      |   |   | lib/               les librairies de votre app
      |   |   | web.xml            configuration de votre app
    
  5. Créez dans le répertoire WebContent une page JSP et nommez-la « index.jsp ». Elle doit ressembler à ceci
    <%@ page language="java"
        contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    </body>
    </html>
    
  6. Sélectionnez votre projet et exécutez-le sur le serveur Tomcat (menu « Run as... / Run on server »). Faites en sorte d'associer définitivement votre projet et le serveur Tomcat (une petite case à cocher avant le lancement).
  7. A ce stade, vous devez pouvoir accéder à votre application via l'URL (http://localhost:8080/monapp/). Vous pouvez maintenant ajouter des pages HTML, JSP et/ou des sources Java dans votre projet.

Mon premier bean

♦  Modifiez la page précédente pour qu'elle affiche la date du jour et l'heure à chaque exécution.

♦ Faites tourner les exemples présentés en cours d'affichage et de manipulation d'un produit.

♦ Faites varier la portée (le scope) du <useBean> et observez les différences dans les trois cas (request, session, application).

Introduire une couche métier

♦ Essayez de créer un « bean » représentant une personne (nom, prénom, login, date de naissance, adresse, page WEB, adresse e-mail) et la page JSP permettant de produire un formulaire d'édition des caractéristiques de cette personne. Une fois les informations validées, listez cette fiche sous la forme d'un tableau avant de passer à une autre personne.

♦  Pour organiser l'application, vous pouvez maintenant introduire une couche métier très simple :

public class Business {

    public Business()
        { ... }

    // lire une personne identifiée par son login
    public boolean findPerson(String login, String password, Person p);
        { ... }

    public boolean savePerson(Person p);
        { ... }

    public close() { ... }
        { ... }

}

♦  Pour l'instant, elle se charge essentiellement de la persistance. Je vous conseille, dans un premier temps, de simuler cette persistance. Vous aurez le loisir, plus tard, de réaliser la persistance via JPA. Cette couche métier sera déclarée dans les pages JSP comme un bean de porté application. Ajoutez à votre JavaBean Person les trois propriétés login, mot de passe et un drapeau indiquant si la personne est authentifiée.

♦  Proposez maintenant deux pages JSP : la première demande un login et un mot de passe et la seconde propose un formulaire de modification de cette personne. Prenez soin de faire le minimum de vérification avec d'enregistrer une personne. Vous pouvez également proposer une troisième page qui liste les personnes et propose des liens vers la page d'authentification.

♦  Avec la configuration ci-dessous, vous êtes capable, au chargement de l'application, de lancer une page JSP particulière afin de créer la couche métier et de l'initialiser (si besoin) :

<servlet>
   <servlet-name>init-business</servlet-name>
   <jsp-file>/une-page-d-initialisation.jsp</jsp-file>
   <load-on-startup>1</load-on-startup>
</servlet>