TRANSFERT DE LA BASE DE DONNEES DE LA BIBLIOTHEQUE DU LSE VERS LE WEB



Documents pareils
Architectures web/bases de données

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

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Cristallisation dõapplication musicales par collaboration

FileMaker 13. Guide ODBC et JDBC

Application web de gestion de comptes en banques

Logiciel Enterprise Guide Version 1.3 Windows

Mise en œuvre des serveurs d application

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

et Groupe Eyrolles, 2006, ISBN :

I. MODULE DÕINTRODUCTION AUX ORDINATEURS. Yannis Delmas 1999, IUFM de Paris

Module BD et sites WEB

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Java pour le Web. Cours Java - F. Michel

Nécessité de concevoir un outil de recherche PDF Présentation des fonctionnalités d'indexation et de recherche... 3

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Java et les bases de données

Logiciel de création de badges personnalisés.

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Programmation Web. Introduction

ELO Office / Pro Les avantages : Archivage et gestion documentaire

Télécom Nancy Année

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

1/ Présentation de SQL Server :

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

contact@nqicorp.com - Web :

Quick Start Installation de MDweb version 2.3

FileMaker Server 14. Guide de démarrage

DotNet. Plan. Les outils de développement

Débuter avec OOo Base

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Java DataBaseConnectivity

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

FileMaker Server 13. Guide de démarrage

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Les tableaux de bord de pilotage de nouvelle génération. Copyright PRELYTIS

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

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

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

PROCEDURE D'INSTALLATION OPENREPORTS

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Livre Blanc WebSphere Transcoding Publisher

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Test de HSQLDB et Comparatif avec Sqlite

Symantec Backup Exec 12.5 for Windows Servers. Guide d'installation rapide

Auguria_PCM Product & Combination Manager

Mise à jour de version

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Simple Database Monitoring - SDBM Guide de l'usager

Virtualisation de Windows dans Ubuntu Linux

Xserve. FonctionnalitŽs clžs

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

Sommaire. Systèmes d Exploitation Intégration Sage 100 Sage CRM Disponibilité Client Bases de données... 3

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

FileMaker Server 12. publication Web personnalisée avec XML

Guide de l'utilisateur

VLAN Trunking Protocol. F. Nolot

Guide du coordinateur de système du SCI modulaire 4.0

Moteur de réplication de fichiers BackupAssist

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

Annexe 5. Kaspersky Security For SharePoint Servers. Consulting Team

TP1. Outils Java Eléments de correction

Ce logiciel est une mise à jour de l'application FileMaker Pro 9 ou FileMaker Pro 9 Advanced vers la version 9.0v3.

Serveur d application WebDev

Développement des Systèmes d Information

Business Intelligence avec SQL Server 2012

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

Introduction à. Oracle Application Express

Chapitre 10. Architectures des systèmes de gestion de bases de données

Sage CRM. 7.2 Guide de Portail Client

PHP 5.4 Développez un site web dynamique et interactif

Architecture Orientée Service, JSON et API REST

Les bases de données Page 1 / 8

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

SAP BusinessObjects Web Intelligence (WebI) BI 4

Gestion de stock pour un magasin

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

Architecture de la plateforme SBC

Solution universelle de Gestion Electronique de Documents et d Archives Numériques

Silk Central Notes de Release

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Communiqué de Lancement

Hébergement de sites Web

7.0 Guide de la solution Portable sans fil

Méta-annuaire LDAP-NIS-Active Directory

TP Bases de données réparties

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Les outils actuels permettent-ils d automatiser la production de cartes? De quels outils dispose-t-on?

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

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

Introduction : présentation de la Business Intelligence

Transcription:

Projet de 6 me semestre 1999 Laboratoire des Syst mes d'exploitation (LSE) Section Syst mes de Communication, EPF-Lausanne TRANSFERT DE LA BASE DE DONNEES DE LA BIBLIOTHEQUE DU LSE VERS LE WEB EtudiantÊ: JOHANSSON Sylvain Responsable: WIESMANN Matthias

TRANSFERT DE LA BASE DE DONNES DE LA BIBLIOTHEQUE DU LSE VERS LE WEB Sylvain Johansson, tžl. 079-4473201, Sylvain.Johansson@epfl.ch Lausanne, le 10.6.1999

Table des mati res. Introduction Introduction DonnŽe du projet Qu'est-ce qu'un servlet? Cahier des charges DŽmarche suivie Base de donnžes Analyse de la base de donnžes existante Quelle base de donnžes utiliser? Conception de la nouvelle base de donnžes Conception du site Structure gžnžrale du site Package ch.epfl.lse.biblio.johansson.util Classes de bases. Couche 1 Couche 2 Commentaires sur le code. Servlets Structure gžnžrale des servlets Probl mes rencontržs Conclusion

Annexes Introduction. Introduction. La biblioth que du LSE est composže d'environ 300-400 livres. Ces livres ont ŽtŽ intžgržs dans une base de donnžes au fur et ˆ mesure de leur achat, celle-ci est actuellement au format FileMaker Pro 2.1. Pourtant cette base de donnžes n'a pas ŽtŽ utilisže ˆ des fins de consultation, elle est restže confinže sur le Macintosh de la secržtaire. Le projet consiste ˆ transfžrer cette base de donnžes vers le serveur web du labo, et de permettre ainsi la recherche de livres, les džmarches d'emprunt et de retour ainsi que l'administration de la biblioth que en ligne.

DonnŽe du projet. Initialement (selon la donnže originale du projet), il s'agissait de s'adapter ˆ la structure existante. Ë savoir d'žtudier la faisabilitž de diffžrentes stratžgiesê: TransfŽrer la base de donnžes vers FileMaker Pro 3.0 et scripter FileMaker Pro 3.0 ˆ l'aide d'applescript pour gžrer l'interaction avec le web en faisant tourner cela sur un serveur Macintosh. TransfŽrer la base de donnžes vers FileMaker Pro 4.0 et utiliser les options offertes par FileMaker Pro 4.0 pour gžrer l'interaction avec le web en faisant tourner cela sur un serveur Macintosh. ƒtudier d'autres possibilitžs. Cette donnže a ŽtŽ modifiže en džbut de projet (par impossibilitž de disposer d'un serveur Macintosh). La donnže džfinitive se pržsente ainsi : exporter la base de donnžes vers un SGBD (syst me gestion de base de donnžes) Java et gžrer toute l'interaction avec le web ˆ l'aide de servlets.

figure 1 : schžmatique du projet Qu'est-ce qu'un servlet? Au premier abord un servlet peut tre vu comme un "server-side applet". Il est chargž par le serveur dans sa machine virtuelle Java et exžcutž (tout comme un applet est chargž par un navigateur puis exžcutž). Le servlet est donc une sorte d'application Java. Le serveur qui re oit une requ te http pour le servlet la lui transmet. Le servlet exžcute son code et retourne le ržsultat au serveur qui le transmet au client. En somme, les servlets sont un excellent substitut de script CGI (voir la littžrature sur les servlets pour une liste džtaillže des avantages). Un des avantages qui n'est pas des moindres est la possibilitž de pouvoir utiliser toute l'žtendue du langage Java. La programmation de servlets exige uniquement de prendre connaissance des principes de base, la lecture de quelques codes sources suffit largement ˆ comprendre comment cela fonctionne. Pour qui a džjˆ programmž en Java, je dirai que c'est d'une grande accessibilitž. Concr tement pour ce qui est de la compilation d'un source de servlet, il suffit de disposer du package javax.servlet (disponible sur le site de Sun) et bien entendu d'un compilateur Java. Pour pouvoir faire tourner des servlets, il faut simplement un serveur supportant ces derniers. Le Java Web server de Sun en est un exemple,

mais il existe Žgalement de nombreux modules d'extensions disponible pour la plupart des serveur existants (tel JRun pour Apache). Ces quelques lignes se veulent simplement introductives, je conseille ˆ quiconque est plus intžressž de consulter le web o de tr s nombreux articles permettent d'approfondir le sujet. Cahier des charges. Le cahier des charges a ŽtŽ Žtabli en collaboration avec Matthias Wiesmann et se pržsente ainsiê: 1. ƒlžments essentielsê: Livres Base de donnžes structurže Base de donnžes populže selon Žtat actuel de la biblioth que Interface Recherche / listes par : auteur titre Žditeur mots clžs Modifications 2. Gestion emprunts : Gestion personnes Interface emprunt / retour 3. Optionnel : Exportation livre format BibTeX 4. Contraintes : Java 1.1 Servlets

SGBD: Instant DB Code portable Code solide DocumentŽ (javadoc) De ce cahier des charges se džgage la nette volontž d'obtenir une architecture en couche, ceci pour des Žvidentes raisons de souplesse future. La gestion des personnes est voulue indžpendante de celle des livres, afin de permettre une Žventuelle fusion de donnžes avec d'autres projets (par exemple le serveur bibliographique du LSEÉ). DŽmarche suivie. Ce projet a impliquž diffžrentes activitžs pržalables : La recherche de documentation sur des concepts thžoriques inconnus de ma part. L'assimilation de ces diffžrents concepts. Voici la liste de ces concepts que j'ai eu ˆ apprendre durant le projet : Concept Connaissances initiales Connaissances acquises Servlets nulles tr s bonnes SQL nulles tr s bonnes Programmation en Java simples bonnes Programmation concurrente en Java nulles simples JDBC nulles simples SpŽcificitŽs du protocole http nulles simples JavaScript nulles basiques Structure de base de donnžes basiques simples Format BibTeX nulles simples Ensuite la programmation concr te : La cržation de la nouvelle base de donnžes. La conception du site.

Les classes Java nžcessaires (ch.epfl.lse.biblio.johansson.util). Les servlets.

Base de donnžes. Importation de la bd dans FM Pro 4 1 Exportation bd au format texte CrŽation tables SQL dans Instant DB Importation livres dans Instant DB figure 2 : schžma cržation base de donnžes Analyse de la base de donnžes existante. La base de donnžes originale contient les champs suivants : N livre Titre Auteur(s) ƒditeur Date d'ždition Date d'entrže Mots clžs Ces champs ont ŽtŽ intžgralement repris, avec leur syntaxe propre, c'est- ˆ-dire celle adoptže lors du remplissage initial de la base. La reprise de cette syntaxe est source de quelques ennuis lors de l'exportation BibTeX par exemple (inversion des initiales et du nom des auteurs). Mais j'ai fait

le choix de conserver les donnžes selon leur formatage initial et de traiter chaque Žventuel probl me au cas par cas dans le code. La gestion d'emprunt et de retour nžcessite des champs supplžmentaires : PrŽnom emprunteur Nom emprunteur Quelle base de donnžes utiliser? Pour ržsumer en quelques lignes ce qui ne l'est pas, il existe un package java.sql (qui fait partie du JDK standard) qui permet d'interagir avec une base de donnžes SQL depuis une application, un servlet ou un applet Java. Ce package contient JDBC (Java Database Connectivity), permettant ainsi des ordres SQL d' tre envoyžs ˆ une base de donnžes et les ržsultats ržcupžržs depuis n'importe quel programme Java. Ainsi tout SGBD proposant un driver JDBC est susceptible d' tre utilisž depuis un programme Java. (Au passage, il faut noter le coup de gžnie de Sun. La majoritž du marchž utilisant ODBC (Open Database Connectivity) qui est la spžcification de Microsoft pour l'acc s aux bases de donnžes. Il eut ŽtŽ illusoire d'espžrer un džveloppement massif de drivers JDBC de la part des diffžrents fournisseurs de SGBD (Oracle, Sybase, Microsoft etc..) lorsque les investissements pour džvelopper des drivers ODBC avaient džjˆ ŽtŽ faits. Sun a alors mis au point un pont JDBC-ODBC qui est en fait un driver JDBC utilisant des mžthodes natives C (encore une des possibilitžs de JavaÉ) permettant de faire appel ˆ un driver ODBC pour accžder une base de donnžes!) Pour revenir ˆ ce qui nous pržoccupe, ceci signifie qu'un tr s grand nombre de SGBD peuvent ainsi tre accždžs depuis un servlet. Dans le cadre de ce projet, sous les conseils de Matthias Wiesmann j'ai utilisž Instant DB, qui est un mini-sgbd Žcrit enti rement en Java, et surtout disponible gratuitement sur le web. Instant DB offre Žgalement un

driver JDBC compatible (idb). Instant DB implžmente la plupart des fonctions de bases d'un SGBD, je n'ai en tout cas pas rencontrž de limitations dans le cadre de ce projet. Ainsi, ˆ l'aide de JDBC, toute l'interaction avec la base de donnžes est effectuže en faisant appel aux mžthodes du package java.sql. A noter que Instant DB est džjˆ utilisž par le LSE pour le serveur bibliographique. Conception de la nouvelle base de donnžes. L'ensemble des champs nžcessaires Žtant fixž, la conception du schžma entitž-association de la base de donnžes requise est possible, il est repržsentž en annexe [1]. J'ai ainsi pu džterminer les tables SQL nžcessaires, soit : livres TABLE no_livre auteurs titre editeur annee_e dition date_ent ree mots_cle s no_empr unteur not null Unique Not null int varchar(1 00) varchar(1 00) varchar(5 0) int date varchar(1 00) int figure 3 : livres TABLE L'attribut no_livre est l'identifiant simple et unique de la table livres. L'attribut no_emprunteur ržfžrence personnes.no_personne. Cet attribut est utilisž pour indiquer le statut d'un livre. Il est ˆ zžro si le livre est disponible et au no_personne l'ayant empruntž le cas ŽchŽant. Les auteurs sont sžparžs par des virgules, les mots clžs pas des tirets. personnes TABLE no_personne prenom Nom

Not null Not null Unique Not null int varchar(50) varchar(50) figure 4 : personnes TABLE L'attribut no_personne est l'identifiant simple et unique de la table personnes. Il est Žvident que l'attribut no_personne de la TABLE personnes est redondant, car l'attribut composž prenom+nom constitue un identifiant unique. Je l'ai pourtant rajoutž pour des simples questions de commoditž de manipulation de la TABLE. Il est a noter que les deux TABLE sont indexžes, livres sur no_livre et personnes sur no_personne. Les bases de donnžes et les TABLE ont ŽtŽ cržes ˆ l'aide d'un des utilitaires disponibles avec Instant DB (SQL Builder), les commandes SQL correspondantes sont repržsentžes en annexe [2].

Conception du site. Selon la donnže du projet, j'ai rapidement pu arr ter la forme et les fonctionnalitžs nžcessitžes par le site. Le plan du site est repržsentž en annexe [3]. Les principales rubriques Žtant : Recherche et emprunt d'un livre Retour d'un livre Administration des livres des personnes Recherche et emprunt.

figure 5 : capture d'žcran de l'index de recherche La recherche džmarre sur un index qui donne deux possibilitžs : Remplir un formulaire avec ses propres de crit res de recherche, choisir l'ordre de tri (titre, auteurs,žditeur, date d'ždition, mots clžs) et choisir les livres concernžs (tous, empruntžs, disponibles). Si plusieurs champs sont remplis, la recherche va porter sur tous ces champs (AND). Par contre si un champ est rempli avec plusieurs valeurs, la recherche portera sur une de ces valeurs (OR). Lister certains livres (tous, empruntžs, disponibles) selon l'ordre de tri choisi. Le ržsultat d'une recherche affiche une liste des livres satisfaisant les crit res de recherche. La disponibilitž de chaque livre est Žgalement indiquže, donnant acc s ˆ l'emprunt du livre ou au nom de son emprunteur le cas ŽchŽant.

figure 6 : capture d'žcran d'un ržsultat de recherche Retour. figure 7 : capture d'žcran de l'index de retour Le retour est voulu le plus convivial et le plus rapide possible. L'index de retour donne donc une liste des personnes pržsentes dans la base de donnžes. En sžlectionnant son propre nom, l'utilisateur se voit pržsenter une liste des ouvrages qu'il a empruntžs avec possibilitžs de les rendre. Administration.

figure 8 : capture d'žcran de l'index d'administration Il s'agit d'un menu qui donne acc s ˆ l'ensemble des fonctionnalitžs de gestion de la base de donnžes. Ajout, suppression et modification d'un livre, ajout et suppression d'une personne. Ces opžrations sont pržcždžes d'un contr le: La suppression d'un livre est impossible si celui-ci est empruntž. La suppression d'une personne est impossible tant que celle-ci a des livres empruntžs. L'ajout d'une personne džjˆ pržsente est impossible. Toutes les opžrations impliquant une Žcriture dans la base de donnžes (emprunt, retour, ajout, modification) passe impžrativement au pržalable par un Žcran de confirmation. IntŽgritŽ des donnžes rentržes dans les champs de formulaire.

J'ai choisi de ne pas vžrifier l'intžgritž des donnžes par du JavaScript, il peut en effet tr s bien y avoir un utilisateur ayant džsactivž cette fonctionnalitž sur son logiciel de navigation. Le contr le est donc effectuž dans les servlets m mes, une donnže erronže suscitant le ržaffichage de la page avec un message d'erreur. Package ch.epfl.lse.biblio.johansson.util.

Le code a ŽtŽ džveloppž selon un principe de couches. Le but Žtant de rendre chaque couche strictement indžpendante des autres. Une modification interne ˆ une des couches ne doit nžcessiter aucun changement dans les autres. Classes de bases. Il s'agit premi rement de la classe Livres, une instance de cette classe permet de repržsenter un livre et fournit toutes les mžthodes utiles ˆ sa manipulation. La deuxi me classe de base est la classe Personnes. Une instance de cette classe repržsente une personne habilitže ˆ emprunter un livre. Lorsque le ržsultat d'une requ te dans la base de donnžes est un livre, celui-ci est placž dans une instance de la classe Livres, de m me dans le cas d'une personne celle-ci est placže dans une instance de la classe Personnes. 1 re couche JAVA SQL bd

figure 9 : schžma de la 1 re couche La premi re couche constitue le noyau du code. Elle comporte toute l'interaction avec la base de donnžes, et de fa on exclusive. Tout ce qui est formation d'une requ te SQL selon certains crit res, questionnement de la base de donnžes, traitement des ržsultats (cržation d'un tableau d'instances de Livres par exemple) est encapsulž dans cette premi re couche. De telle sorte que l'interface visible de cette couche est constituže d'un nombre relativement restreint de mžthodes Java permettant d'effectuer toutes les modifications ou tous les questionnements džsiržs en ne fournissant que les param tres džsiržs. Par exemple la recherche de livres est effectuž en faisant appel ˆ la mžthode researchinlivres() qui prend en argument un objet Livres contenant les param tres de recherche et retourne un tableau d'objets Livres repržsentant le ržsultat de la requ te dans la base de donnžes. Les acc s ˆ la TABLE livres sont gžržes par la classe DatabaseUtilitiesLivres, ceux ˆ la TABLE personnes par la classe DatabaseUtilitiesPersonnes. Les mžthodes gžnžrales ainsi que celles qui sont communes aux deux TABLE sont regroupžes dans la classe DatabaseUtilities. J'ai Žgalement džveloppž une architecture lecteurs-rždacteurs pour les acc s ˆ la base de donnžes, avec prioritžs Žgales aux deux. Plusieurs lecteurs sont autorisžs simultanžment (acc s ˆ la base de donnžes en lecture) alors qu'un seul rždacteur est tolžrž (acc s ˆ la base de donnžes en Žcriture). Cette architecture est regroupže dans la classe DatabaseAccessRestriction, elle est expliquže plus en džtail en annexe [4]. L'interface visible de cette premi re couche est presque exclusivement des tableaux d'objets Livres ou Personnes.

2 me couche HTML JAVA figure 10 : schžma de la 2 me couche Cette couche fait le lien entre la premi re qui fournit le ržsultat d'une requ te dans la base de donnžes et le formatage des donnžes en vue d'une publication Html. Majoritairement cette couche fournit des instances de classe qui sont la plupart du temps des sous-classes de lse.html.htmlbasicobject. Ceci dans le but de pouvoir aisžment les inclure dans une page Html gžnžrže par la classe lse.html.htmlpage ˆ l'intžrieur d'un servlet. Ainsi on y trouve des listes de Livres, de personnes, des formulaires etcé La gestion du formatage en caract re Html est Žgalement comprise, voir les explications sur la classe HtmlSyntaxedString en annexe [5]. Cette couche contient Žgalement les outils pour faire le travail inverse. A savoir le džcodage d'informations contenues dans des formulaires ou des liens Html, ceci au travers de diverses mžthodes de traduction. Ainsi par exemple cette deuxi me couche permet de traduire une requ te Http d'un formulaire de recherche de livres en un objet de la classe Livres reflžtant les param tres contenus dans le formulaire. Commentaires sur le code. SŽcuritŽ :

En plus de la satisfaction que procure un code relativement "propre", dans le cadre de servlets ceci se trouve tre un impžratif! En effet, il est tr s peu conseillž d'avoir un code instable lorsque celui-ci tourne sur la machine virtuelle du serveur web, ce qui est le cas avec des servlets. J'ai donc pris un soin particulier ˆ vžrifier l'intžgritž des donnžes ˆ chaque niveau. Ceci a principalement ŽtŽ fait par un traitement des exceptions, chaque zone sensible du code est entourže d'un "try {É..} catch(exception ex) {É..}" afin de pržvenir toute maladresse, et de permettre de au programme de supporter une erreur sans planter, dans la mesure du possible. PortabilitŽ : Les packages importžs dans mon code sont ceux du JDK standard ainsi que certains du LSE. Aussi loin que je sache, aucun d'eux ne fait appel ˆ une implžmentation particuli re qui pourrait limiter la portabilitž du code. De plus, tous les tests ont ŽtŽ effectužs sur au moins trois implžmentation de la machine virtuelle Java diffžrentes (MacOs Runtime for Java 2.1.2, Windows 98, SunOS 5.6) et je n'ai pas rencontrž de probl mes. LisibilitŽ et documentation Le code contient un maximum de commentaires, ce qui devrait permettre ˆ un lecteur de s'y retrouver. Les commentaires d'en-t te ont ŽtŽ Žcrit de sorte ˆ ce qu'ils soient compatible javadoc, ce qui permet d'avoir une javadoc compl te des diffžrentes classes et des servlets. Classe HtmlTitle Cette classe repržsente les titres Html dans leur syntaxe standard, exemple : <H3 align="center">éééé..</h3> La classe HtmlTitle implžmente la classe lse.html.htmlobject et fournit aisni des objets repržsentant des titres Html qui sont aisžment intžgrables dans une page Html gžnžrže par la classe lse.html.htmlpage. Cette classe aurait ˆ mon avis tout ˆ fait sa place dans le package lse.html du LSE.

Servlets. HttpServletRequest 1 request traduction servlet

2 database access 3 Html formatting HttpServletResponse figure 11 : schžma des servlets Les deux premi res couches Žtant bien fournies, l'žcriture des servlets s'est presque ržsumže ˆ en faire simplement usage. Le schžma gžnžral des servlets džveloppžs dans le cadre de ce projet est le suivant : 1. Les servlets font appel ˆ la deuxi me couche pour traduire les demandes de l'utilisateur en provenance du document Html source. 2. Une fois džcodžs, ces param tres sont passžs ˆ la premi re couche qui s'occupe de sonder la base de donnžes et de renvoyer une ržponse satisfaisant la requ te. 3. Cette ržponse est ensuite repassže ˆ la deuxi me couche dans le but de la formater pour une publication Html. Les servlets gžn rent ainsi une page Html dans laquelle est insžrže le ržsultat de la requ te. Les servlets ne surchargent pas tous les deux mžthodes doget() et doput(). Attention ˆ ceux qui le font, parfois ce n'est pas du tout le m me traitement qui est effectuž.

Probl mes rencontržs. Le premier probl me est plus un inconvžnient de džveloppement liž aux servlets qu'un vžritable probl me. La g ne provient du test des servlets, autant les essais sur des classes peuvent tre ržalisžs dans n'importe quelle machine virtuelle Java, autant les servlets exigent de faire appel ˆ un serveur web (ou au servletrunner de Sun). L'ennui vient plut t du fait que toute modification sur un servlet requiert de redžmarrer le serveur (ou le servletrunner). Certaines autres solutions sont envisageables, mais il n'emp che que cela reste assez lourd. La base de donnžes originale fut source de quelques džsagržments. Il m'a fallu corriger ˆ la main (ou plut t au clavier) des dizaines d'entržes. En effet, le remplissage s'est vraisemblablement fait sur plusieurs annžes et la convention syntaxique pour les auteurs n'žtait pas respectže tout du longé J'ai Žgalement rencontrž des probl mes de gestion des caract res accentužs avec Instant DB. La visualisation du contenu de la base de donnžes (ˆ l'aide d'utilitaires fournis avec Instant DB) ou des requ tes imprimžes sur le stdout portent ˆ croire que les accents ne sont pas gžržs correctement, alors qu'il n'en ait en fait rien. D'autre part, pour ce qui de la syntaxe majuscule-minuscule, Instant DB ne g re malheureusement pas lui-m me les diffžrentes syntaxes (unix pour Unix par exemple). J'ai donc implžmentž la premi re couche, de sorte ˆ ce que les requ tes SQL soient effectužes sur plusieurs versions syntaxiques du m me mot. Il y a aussi certains džveloppements inutiles de ma part. L'ensemble des fonctionnalitžs offertes par les classes standards de Sun Žtant relativement vaste, il m'est arrivž deux fois de mettre au point des mžthodes faisant exactement le m me travail que des mžthodes džjˆ existantes!

Conclusion. Au final, la partie visible du projet propose une interface simple et conviviale. L'ensemble des spžcifications du cahier des charges a ŽtŽ pris en compte, et de nombreux tests ont ŽtŽ menžs sur diffžrentes machines virtuelles laissant supposer un fonctionnement correct. Le service de consultation et d'emprunt de la biblioth que du LSE sera ainsi accessible sur le web. L'intŽgration avec d'autres projets du LSE est mise en Žvidence par le fait que la fa on dont le projet a ŽtŽ structurž permettra une Žventuelle future collaboration avec le serveur bibliographique. L'utilisation des classes des diffžrents package lse.html est un autre exemple de complžmentaritž. Ce projet m'a permis de conna tre de nombreux sujets dans lesquels je n'avais pratiquement aucune connaissance, mais avant tout j'ai l'impression d'avoir ŽtŽ tr s bien conseillž et d'avoir appris ˆ programmer bien mieux. La structuration en couche, la gestion des exceptions et autres sont autant de points ennuyeux ˆ prendre en compte au džbut, mais j'ai ržalisž ˆ quel point ceux-ci deviennent indispensables lorsque la quantitž de code est consžquente.

Annexes. [1] : schžma entitž-association de la base de donnžes. [2] : commandes SQL pour la cržation de la base de donnžes. [3] : plan du site. [4] : explications sur la classe DatabaseAccessRestriction. [5] : explications sur la classe HtmlSyntaxedString. [6] : explications sur la classe LivresBibtexEntry. [7] : remarques diverses. [8] : environnement de travail. [9] : CD et contenu du CD. [10] : codes sources du package ch.epfl.lse.biblio.johansson.util. [11] : codes sources des servlets.