Systèmes d information répartis TD1 initiation aux servlets avec Tomcat et Eclipse



Documents pareils
Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Groupe Eyrolles, 2005, ISBN :

Introduction à Eclipse

I. Instalation de l environnement JDK et JRE : II. Configuration outil Reporting : Pentaho... 4

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Application web de gestion de comptes en banques

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Eclipse atelier Java

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

Tutoriel Drupal version 7 :

Etude de cas : PGE JEE V2

Utilisation de Jakarta Tomcat

Installation et prise en main

Compte Rendu d intégration d application

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Système Normalisé de Gestion des Bibliothèques -SYNGEB : version Réseau-

1. Installation d'un serveur d'application JBoss:

contact@nqicorp.com - Web :

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Web Tier : déploiement de servlets

TP1 : Initiation à Java et Eclipse

Découvrez notre solution Alternative Citrix / TSE

Installation locale de JOOMLA SEPIA

Réf. : S2I-CIELL2-PI-1.0. Version : 1.0. Auteurs : S2I-TOULON

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

La base de données XML exist. A. Belaïd

GUIDE DE L UTILISATEUR

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Quick Start Installation de MDweb version 2.3

TP1 : Initiation à Java et Eclipse

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Installation des outils OCS et GLPI

arcopole Studio Version 3.3

Java DataBaseConnectivity

Groupe Eyrolles, 2003, ISBN : X

LES ACCES ODBC AVEC LE SYSTEME SAS

FileMaker Server 14. Aide FileMaker Server

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Guide d installation de MySQL

ECLIPSE ET PDT (Php development tools)

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Construire des plug-ins pour SAS Management Console SAS 9.1

Utilisation du client de messagerie Thunderbird

Espace pro. Installation des composants avec Firefox. Pour. Windows XP Vista en 32 et 64 bits Windows 7 en 32 et 64 bits

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Manuel d utilisateur du site de covoiturage «Etucovoiturage»

Dans cette Unité, nous allons examiner

Guide d'installation sous Windows

Architecture Orientée Service, JSON et API REST

Application de lecture de carte SESAM-Vitale Jeebop

Manuel d utilisation NETexcom

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Guide d installation BiBOARD

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

TD/TP 1 Introduction au SDK d Android

TAGREROUT Seyf Allah TMRIM

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Tutoriel d installation de Hibernate avec Eclipse

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

BOUCHARD Nicolas. GENTILE Pierre

Installation d'une galerie photos Piwigo sous Microsoft Windows.

Joomla! Création et administration d'un site web - Version numérique

Sauvegarder et restaurer les données PMB

Installation de TeamLab sur un serveur local Ce guide est destiné aux utilisateurs ayant des connaissances de base en administration Windows

Déploiement d application Silverlight

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Documentation Honolulu 14 (1)

Présentation, mise en place, et administration d'ocs Inventory et de GLPI

Créer et partager des fichiers

SAUVEGARDER SES DONNEES PERSONNELLES

FileMaker Server 13. Guide de démarrage

Procédure d'installation complète de Click&Decide sur un serveur

Service de certificat

Le langage C. Séance n 4

Procédure d installation détaillée

Le serveur web Windows Home Server 2011

Assistance à distance sous Windows

A. Architecture du serveur Tomcat 6

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Les architectures 3-tiers Partie I : les applications WEB

JavaServer Pages (JSP)

Intranet d'établissement avec Eva-web Installation configuration sur serveur 2000 ou 2003 Document pour les administrateurs

< Atelier 1 /> Démarrer une application web

SERVEUR DE MESSAGERIE

Comment accéder à d Internet Explorer

Ref : Résolution problème d'accès aux supports de cours

Affectation standard Affectation modifiée (exemple)

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Stellar Phoenix Outlook PST Repair - Technical 5.0 Guide d'installation

Gestion des documents avec ALFRESCO

Transcription:

Systèmes d information répartis TD1 initiation aux servlets avec Tomcat et Eclipse Consignes Utilisez les distributions qui sont dans l archive distribuée en TD Respectez les versions qui sont données, elles ont la vertu de fonctionner ensemble Ne tapez pas de code, copier/coller du code donné en TD ça fonctionne très bien N utilisez pas de répertoire contenant des espaces ou des caractères spéciaux (eclipse, votre workspace et le dossier serveur seront très bien à la racine de votre disque) Respectez les chemins et les noms de dossiers que je vous donne Utilisez les mêmes noms de projet/classe/attribut/méthode que sur le support 1. Installation de la plateforme Installation d outils Avant tout, installez winrar et NotepadPlusPlus que vous trouverez dans l archive. Le JDK Vous ne pouvez utiliser qu un JDK 1.6.x ou 1.7.x (le serveur jboss des TD suivants est incompatible avec des JDK <1.6 mais aussi avec le JDK 1.8). Téléchargez et installez le JDK qui correspond à votre machine (32 bits ou 64 bits) à l adresse (http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html). Les machines de TD fonctionnent en 64 bits. Si vous ne savez pas, appelez-moi. Ajoutez le chemin du JDK dans les variables d environnement de Windows : Bouton droit sur poste de travail > paramètres système avancé Bien sûr, le chemin que vous indiquez est le chemin vers le JDK que vous venez d installer. Il n est pas forcément identique à celui-ci-dessus. Dans les variables système, ajouter le chemin vers le JRE dans le path général (variable Path). Ne détruisez pas le contenu actuel du Path mais RAJOUTEZ AU DEBUT DU PATH le chemin vers votre JRE. Remarque : les chemins que vous inscrivez dans les variables d'environnement sont ceux de vos répertoires d'installation qui ne sont pas forcément strictement identiques à ce qui est indiqué ci-dessus. ASI TD1 Anne Lapujade 1

Installation du serveur Tomcat Récupérez Tomcat x86 ou x64 dans l archive ou téléchargez-le à l adresse (http://tomcat.apache.org/download-h80.cgi). Décompressez l archive dans c:\serveur\. La version utilisée pour faire ce TD est la version 8.0.9. Installation d Eclipse Vous allez utiliser l environnement de développement Eclipse pour votre travail. Téléchargez sur http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/keplersr2 la version «Eclipse IDE for Java EE Developers» qui correspond au JDK installé (32 ou 64 bits) ou récupérez dans l archive la version d éclipse pour «eclipse-jee» Décompressez le fichier dans c:\ Pour plus de simplicité, vous pouvez mettre un raccourci vers l exécutable dans la barre des tâches ou sur le bureau Dans ce TD, nous travaillons avec la version Kepler (4.3.2) d Eclipse. Attention, à ce jour, tous les plugins dont vous aurez n ont pas encore été développés pour la dernière version d Eclipse (Luna 4.4) Remarques : si vous avez des misères avec Eclipse et notamment avec des plugins capricieux, vous pouvez lancer Eclipse avec l option clean pour faire un peu de ménage. Au premier démarrage d Eclipse, changez le chemin de votre workspace pour le placer à la racine de votre disque, par exemple c:\workpace. Installation du plug-in Tomcat Launcher de Sysdeo dans Eclipse Pour connecter Tomcat et Eclipse, vous devez installer un plug-in dans Eclipse. Récupérez le plug-in dansl archive. Décompressez le plug-in dans eclipse/dropins Démarrer ou redémarrer Eclipse. Dans ces TDs le workspace Eclipse est dans c:\eclipseworkspace Si le plugin Tomcat est bien installé, vous devez trouver dans la barre d outils les icônes ci-dessous Configuration du plug-in. Allez dans Windows/Preferences. Ouvrez le menu Tomcat à gauche. o Choisir la version de Tomcat, son répertoire d'installation et l option un fichier par contexte ASI TD1 Anne Lapujade 2

Chaque fois que vous allez créer un projet dans Eclipse avec le plugin Sysdeo crée un fichier c:\serveur\tomcat_7\conf\catalina\localhost\nom_projet.xml qui crée un contexte pour la nouvelle application. Si vous voulez déplacer une application Tomcat, pensez à emporter le contexte Lancement de Tomcat à partir d Eclipse Pour vérifier que l installation est correcte, lancez Tomcat depuis Eclipse. Vous devez obtenir la fenêtre suivante : Eclipse est un environnement de développement ouvert. Vous pouvez avec développer dans plusieurs langages de programmation (c, c++, java, VBA, php ). Il peut aussi vous servir pour gérer des bases de données MySQL par exemple. Pour rajouter un module, il suffit de rajouter un plug-in. Ensuite, pour basculer d un langage à l autre, d une fonctionnalité à l autre, Eclipse définit des Perspectives. Vous pouvez regarder les perspectives installées par défaut en allant dans le menu Windows/Open perspective. Vous pouvez aussi tester le fonctionnement du serveur Tomcat dans votre navigateur en tapant l adresse : http://localhost:8080 (n'oubliez pas le préfixe http:// sinon le serveur n'est pas trouvé). ASI TD1 Anne Lapujade 3

2. Présentation des servlets à écrire Vous allez écrire deux servlets très simples qui génèrent du code HTML. La première renvoie uniquement un texte (HelloServlet) et la deuxième (AfficherPersonne) renvoie le contenu d une table d une base de données. Ces deux servlets seront stockées dans un répertoire sur votre disque dur. Pour permettre à Tomcat de connaître et d exécuter vos servlets, nous allons créer un contexte appelé ProjetServlet. Concrètement un contexte est un fichier xml qui permet d associer à un nom web (ici ProjetServlet) un répertoire de votre disque dur contenant les classes de vos servlets. L architecture de cette application sera la suivante : Browser Serveur Tomcat HTML Contexte : ProjetServlet HTML HelloServlet AfficherPersonne J D B C Scores Client Serveur SGBD ASI TD1 Anne Lapujade 4

3. Création de votre première servlet Vous allez créer une servlet toute simple (HelloServlet) qui va afficher du texte dans une page HTML. Création d un projet Tomcat Comme dans tout environnement de développement, vous devez créer un projet qui contiendra non seulement vos classes mais vous permettra de faire les liens avec les bibliothèques extérieures que vous utiliserez (les classes du connecteur JDBC par exemple). Ici, nous allons créer un projet ProjetServlet qui contiendra vos servlets pour les TDs sur les servlets. Dans Eclipse menu File/New/Project Sélectionner Projet Tomcat (dans le dossier Java) Saisir ProjetServlet comme nom de projet Finish Création de la servlet Toute servlet est écrite dans une classe qui "est une" HttpServlet. Vous allez créer la classe HelloServlet qui va utiliser le mode de transfert get pour ses données. Clic droit sur le nom du projet dans le cadre de gauche (Package explorer) sur le nom du projet (ProjetServlet), sélectionner new/class Saisir les infos correspondant à votre nouvelle classe. Vous allez créer un package dans lequel vous allez stocker toutes vos servlets. Ici, MesServlets. Attention de bien définir la superclasse. ASI TD1 Anne Lapujade 5

Remarquez le répertoire WEB-INF dans lequel vos classes seront stockées. Nous allons maintenant ajouter automatiquement l'en-tête de la méthode doget o Clic droit dans le code source de la classe, sélectionner Source/override implement methods o Sélectionner doget Copiez-remplacez le corps de la méthode Nous allons ici considérer que l'on ne reçoit pas de données entrantes et que le flux de sortie contient uniquement du texte. Cela nous permettra de récupérer ce texte via un navigateur web. Voici le code de la méthode doget() ASI TD1 Anne Lapujade 6

protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out=null; resp.setcontenttype("text/html"); out=resp.getwriter(); out.println("<html>"); out.println("<head><title>test de servlet</title></head>"); out.println("<body>"); out.println("affichage de contenu dans une page web"); out.println("</body>"); out.println("</html>"); } req contient la requête HTML reçue du navigateur web avec tous ses paramètres (ici vide ) et resp contient ce que la servlet renvoie au serveur (ici un script HTML). Ajout d'une bibliothèque. Vous remarquerez que la classe PrintWriter est soulignée en rouge. Le compilateur ne connaît pas cette classe. Il faut rajouter l'import correspondant. Vous pouvez demander à Eclipse de rechercher le package à importer. Cliquez sur le bouton droit sur le nom de la classe PrintWriter. Sélectionnez Source/Organize imports. Remarque : vous ne trouverez pas de menu Build car Eclipse pratique la compilation incrémentale. Vous pouvez toutefois faire un 'refresh' (F5) du projet. Les erreurs de syntaxe vous seront signalées au fur et à mesure de la frappe. Configuration Tomcat de la Servlet Déclaration du contexte. Lors de la création du projet, Eclipse a automatiquement créé un fichier contenant le contexte. Consultez-le et constatez que votre contexte a été déclaré avec son chemin (C:\Serveur\apachetomcat-8.0.9\conf\Catalina\localhost\ProjetServlet.xml). <Context path="/projetservlet" reloadable="true" docbase="c:\eclipseworkspace\projetservlet" workdir="c:\eclipseworkspace\projetservlet\work" > </Context> Chaque servlet doit ensuite être mappée. C'est-à-dire que nous allons lui donner un nom et dire à Tomcat quelle classe utiliser. Pour cela, vous devez créer dans WEB-INF de votre projet un fichier web.xml. Pour cela, cliquez sur le bouton droit sur le dossier WEB-INF et choisir New/File. Nommez ce fichier web.xml. Pour saisir le contenu du fichier, si le fichier n est ouvert, cliquer sur le bouton droit sur le fichier et sélectionnez Open with/ Text Editor. Copiez/collez le mappage pour cette servlet : ASI TD1 Anne Lapujade 7

<?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>mes servlets</display-name> <description> Premières servlets </description> <servlet> <servlet-name>servlethello</servlet-name> <servlet-class>messervlets.helloservlet</servlet-class> <description>servlet d'essai</description> </servlet> <servlet-mapping> <servlet-name>servlethello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> Lancement de Tomcat Si Tomcat est démarré, rechargez le contexte Tomcat pour prendre en compte la modification des fichiers de configuration : bouton droit sur le nom du projet. Sélectionnez Projet Tomcat/Mise à jour du contexte. A partir de maintenant, votre servlet sera automatiquement chargée au lancement de Tomcat et rechargée automatiquement à chaque nouvelle compilation (pas la peine d arrêter et de relancer le serveur à chaque modification de votre classe). Sinon, lancez Tomcat. Si vous rencontrez des problèmes par la suite, pensez à recharger le contexte. Bouton droit sur le nom du projet, sélectionnez Projet Tomcat/ Rechargez ce contexte. Dans la console, vous ne devez pas avoir d erreur et le chargement du contexte est signalé. La console est le point central de votre application. C est le seul endroit ou vos erreurs J2EE côté serveur apparaîtront. Si le projet est chargé, vous devez trouver dans la console la ligne suivante : INFOS: Déploiement du descripteur de configuration D:\Serveur\apache-tomcat- 8.0.9\conf\Catalina\localhost\ProjetServlet.xml Test de la servlet Démarrez votre navigateur à l'adresse http://localhost:8080/projetservlet/hello Remarquez que Tomcat utilise un port http différent du port 80 classique, le port 8080. Si vous voulez que vos servlets soient accessibles de l'extérieur, il faut soit ouvrir le port 8080 dans le firewall soit opérer une redirection dans votre serveur web principal (Apache, IIS, ) des servlets vers Tomcat avec des connecteurs comme mod_jk. 4. Servlet avec connexion à une base de données Nous allons rajouter ici la connexion à une base de données MySQL. La servlet étant un processus du côté serveur, elle peut donc facilement accéder aux bases de données situées sur le ou les serveurs locaux. Cette solution permet de préserver un bon niveau de sécurité car seuls les résultats des requêtes sont envoyés vers l'extérieur. L'authentification à la base de données reste sur le réseau local. Nous allons mettre en place une méthode de gestion des connexions à une base de données utilisant des pools de connexion permettant d'éviter la saturation du serveur. Vous pourrez trouver de plus amples informations à l'adresse : http://tomcat.apache.org/tomcat-8.0-doc/jndi-datasource-examples-howto.html#mysql_dbcp_example. Vous pourriez toutefois adopter une démarche plus simple et plus directe en connectant directement la servlet à une base de données. Stratégie à ne pas utiliser en cas de forte utilisation de la servlet sous peine de saturer le SGBD. De plus, ASI TD1 Anne Lapujade 8

vous ne pourriez plus modifier les paramètres de la BD sans recompiler votre code, ce qui ne facilite pas la réutilisabilité de votre code. 5. Création d une servlet connectée à une BD Installer WAMPSERVER Pour simplifier votre travail de gestion de la base de données, nous n allons pas installer MySQL de manière isolée mais dans une distribution avec le serveur web Apache et l application Web très pratique phpmyadmin. Avant tout, wamp a besoin d une dll pour fonctionner. Installez vcredist_x64.exe que vous trouverez dans l archive Récupérez Wamp Server dans l archive Installez Wamp Server dans c:\serveur Remarque : Si vous avez EasyPhp installé sur votre portable, n installez rien et utilisez EasyPhp Installer le jdbc Le Java Data Base Connectivity (JDBC) pour MySQL s'appelle Connector/J. Installez mysql-connector-java-gpl-5.1.31.msi Copier C:\Program Files (x86)\mysql\mysql Connector J\mysql-connector-java-5.1.31-bin.jar dans le répertoire C:\Serveur\apache-tomcat-8.0.9\lib. Cela permettra à vos servlets d'utiliser les classes du package pour se connecter à MySQL Création d'une table 'personne' et ajout d'enregistrements Démarrez WampServer Démarrez PhpMyAdmin Allez dans la base test (créez-la si nécessaire) Créez une table personne (cle, nom, prenom) o cle clé primaire de type int o nom varchar o prenom varchar Ajoutez quelques enregistrements Création du pool de connexion Il y a deux manières d'accéder à une base de données. Soit chaque application J2EE crée sa connexion soit il existe un gestionnaire de connexions qui crée et gère les connexions et les files d'attente pour l'ensemble des applications. Il est évident que seule cette deuxième solution permet d'optimiser la charge sur le SGBD. Cette solution consiste à mettre en œuvre un pool de connexion. Pour que cela fonctionne, chaque application qui a besoin d'une connexion doit pouvoir la demander au pool. A cet effet, J2EE permet de définir une ressource de manière globale au serveur par un nom qui sera ensuite réutilisable par n importe quelle application J2EE. C est le JNDI (Java Naming and Directory Interface). Pour déclarer une ressource de niveau global au serveur, il suffit d éditer avec Notepad++ et de rajouter une balise <Resource />dans le fichier c:\serveur\tomcat5_5\conf\serveur.xml à l intérieur de la balise existante GlobalNamingResources de la façon suivante : <GlobalNamingResources> <!-- JNDI de la base test --> <Resource name="base_test" type="javax.sql.datasource" password="" driverclassname="com.mysql.jdbc.driver" maxidle="2" maxwait="500" username="root" url="jdbc:mysql://localhost/test?autoreconnect=true" maxactive="500" /> </GlobalNamingResources> Le nom visible de la base de données test est maintenant base_test. Remarque : N éliminez pas la datasource qui est déjà présente!! ASI TD1 Anne Lapujade 9

Lien entre la ressource JNDI et l application La deuxième étape consiste à faire la mappage entre notre application web et la ressource JNDI. Pour cela, nous allons enrichir le contexte de notre application. Modifiez le fichier conf\catalina\localhost\projetservlet.xml de la façon suivante : <Context path="/projetservlet" reloadable="true" docbase="c:\eclipseworkspace\projetservlet" workdir="c:\eclipseworkspace\projetservlet\work" > <ResourceLink name="base_test" global="base_test" type="javax.sql.datasource"/> </Context> Ce fichier me permet de faire le lien entre la ressource utilisée dans mon fichier et le nom global. Il est alors par exemple, extrêmement simple de modifier une application web si la base de données change de nom Création de la servlet Nous allons créer une servlet toute simple qui récupère les enregistrements dans la table personne et les renvoie sous forme de texte. Nous pourrons ainsi visualiser le résultat dans un navigateur web. Nous restons toujours dans le même projet. Repasser dans la perspective java. Clic droit sur le nom du projet (vue Package explorer), sélectionner new/class Saisir les infos correspondant à votre nouvelle classe. Vous allez créer un package dans lequel vous allez stocker toutes vos servlets. Ici, MesServlets. Attention de bien définir la superclasse. ASI TD1 Anne Lapujade 10

Nous allons maintenant ajouter automatiquement les en-têtes o Clic droit sur la classe (cadre de gauche), sélectionner Source/override implement methods. Sélectionner doget et init Avant de pouvoir connecter la servlet à la base de données, nous devons tout d abord créer le pool de connexion. Ce pool nous permettra notamment de maîtriser le nombre de connexions simultanées autorisées. ASI TD1 Anne Lapujade 11

Connexion à la base Une servlet est chargée soit au lancement du serveur Tomcat soit lors de sa première utilisation et reste chargée en mémoire. Dans ces deux cas, il suffit de se récupérer une connexion à la base dans le pool une fois lors de ce chargement. Pour cela, nous allons utiliser la méthode init. Une fois la connexion obtenue, tous les appels à la servlet utiliseront cette connexion. La méthode init() est lancée une fois lors de l'activation de la servlet. Dans la méthode init, nous allons récupérer un pointeur sur la ressource JNDI (la base test) puis nous connecter à cette ressource. Pour cela, nous allons charger le contexte puis récupérer un pointeur sur la ressource base_test. Ajouter deux attributs dans la classe pour le stockage de la connexion : Connection BD; DataSource ds; Ecrire le corps suivant pour la méthode init() : public void init() throws ServletException { try { System.out.println("Récupération du contexte"); Context initctx = new InitialContext(); System.out.println("lookup de env"); Context envctx = (Context) initctx.lookup("java:comp/env"); System.out.println("lookup de base_test"); ds=(datasource) envctx.lookup("base_test"); //System.out.println("Datasource chargée"); } catch(exception er) { System.out.println("Erreur de chargement du contexte " + er); } } Ajouter les imports nécessaires avec l'option organize imports. Pour info, la classe Connection fait partie de java.sql. Vous pouvez remarquer que l on ne se connecte pas à la base comme vous avez pu le faire en php mais que l on récupère une connexion existante. La connexion est gérée par le pool au niveau du serveur qui attribue aux demandeurs les connexions disponibles. Affichage du contenu d'une table Ecrivons maintenant le contenu de la méthode doget() protected void doget(httpservletrequest req, HttpServletResponse resp) throws ServletException, IOException { try { BD=ds.getConnection(); Statement s = BD.createStatement(); ResultSet r = s.executequery("select * from personne"); PrintWriter out=null; resp.setcontenttype("text/html"); out = resp.getwriter(); out.println("<html>"); out.println("<head><title> Test servlet </title></head>"); out.println("<body>"); out.println("contenu de la table personne <BR>"); out.println("<table>"); out.println("<tr>"); out.println("<td>nom</td>"); out.println("<td>prénom</td>"); out.println("</tr>"); while (r.next()) { out.println("<tr>"); out.println("<td>"); out.println(r.getstring("nom")); out.println("</td>"); out.println("<td>"); out.println(r.getstring("prenom")); out.println("</td>"); out.println("</tr>"); } out.println("</table>"); out.println("</body>"); out.println("</html>"); ASI TD1 Anne Lapujade 12

r.close(); s.close(); BD.close(); s = null; r = null; } catch (java.sql.sqlexception ex) { System.out.println("Erreur d'exécution de la requête SQL \n"+ex); } } Vous pouvez voir ici deux classes très importantes pour la consultation de bases de données : Statement et RecordSet. Statement vous permet de manipuler des tables et d'exécuter vos requêtes. RecordSet contient le jeu d'enregistrement résultat de la requête. Mappage de la servlet Tout comme pour notre première servlet, nous devons mapper notre servlet pour qu'elle soit reconnue par le serveur Tomcat. Vous devez rajouter les lignes suivantes dans le fichier web.xml dans le répertoire WEB-INF : <servlet> <servlet-name>servletbd</servlet-name> <servlet-class>messervlets.afficherpersonne</servlet-class> <description>servlet d'essai de la connection BD</description> </servlet> <servlet-mapping> <servlet-name>servletbd</servlet-name> <url-pattern>/essaibd</url-pattern> </servlet-mapping> Exécution de la servlet Lancer Tomcat (il faut le démarrer ou le redémarrer pour la prise en compte du pool de connexion). Démarrer votre navigateur et testez l'adresse http://localhost:8080/projetservlet/essaibd 6. Sérialisation de requêtes Nous allons étudier ici les possibilités offertes par les servlets en tant que services offerts à un programme java. Nous allons écrire une application qui permet la recherche de personnes dans la table personne à partir de leur nom. Nous sommes ici en présence d une application 3 tiers : 1. Le client est une applet qui se chargera de la partie interface graphique avec l utilisateur (saisie du nom à chercher et affichage des résultats) 2. Côté serveur une servlet se chargera via le JDBC de l exécution de la requête 3. Toujours côté serveur, le dernier tiers est le SGBD mysql La sérialisation La sérialisation des résultats d'une requête Pour renvoyer le résultat de la requête dans un objet, cet objet doit être sérialisable. On dit qu'un objet java est sérialisable quand il peut être écrit dans un format flux d'octets depuis une machine virtuelle Java et reconstruit sans perte sur une autre machine virtuelle Java. Or les ResultSet ne sont pas sérialisables. En effet, un ResultSet contient notamment une référence à la connexion à la base de données, ce pointeur, si il est transmis au client, n'aura plus aucun sens Il nous faut donc trouver une solution pour transférer les données et uniquement les données du ResultSet vers votre applet. Il 'suffit' de créer un objet semblable au ResultSet mais contenant uniquement les données sérialisables que vous voulez transmettre à l'applet. Ce travail a déjà été réalisé par des programmeurs. Pour cela, vous allez utiliser le package SResultSet (Serialised ResultSet). ASI TD1 Anne Lapujade 13

Utilisation du package SResultSet Vous pouvez récupérer le package SResultSet dans l archive. Le package SResultSet contient deux classes : XList qui est une hash table qui va contenir les résultats de la requête SResultSet qui est la sœur de ResultSet mais contenant uniquement les données sérialisables.. Ce package est utilisé par la servlet le SResultSet pour formater le ResultSet et l'envoyer à l'applet. L'applet va utiliser le SResultSet pour formater l'envoi de la servlet et récupérer les données transférées. Pour ajouter ces classes au projet : Créez un nouveau package dans le projet appelé SResultSet Importez les classes téléchargées dans le package Voyons maintenant comment fonctionne cette sérialisation. ASI TD1 Anne Lapujade 14