Nicolas Mérat automne Stockage de données multimédias et conception de présentations dynamiques avec SMIL et Lazy

Dimension: px
Commencer à balayer dès la page:

Download "Nicolas Mérat automne 2001. Stockage de données multimédias et conception de présentations dynamiques avec SMIL et Lazy"

Transcription

1 Nicolas Mérat automne 2001 Professeur G. Falquet Département de Système d Information Stockage de données multimédias et conception de présentations dynamiques avec SMIL et Lazy

2 Table de matières 1. Introduction Objectifs du travail Outils utilisés SMIL (Synchronized Multimedia Integration Language) Généralités Caractéristiques Structure d un document SMIL Les principaux players SMIL Oracle et les LOBs Généralités Le type BLOB Le type BFILE Manipulation de BLOB Fonctionnement du type BLOB Exemple de création de table contenant le type BLOB Exemple d initialisation et d écriture d un BLOB Exemple de lecture d un BLOB Manipulation de BFILE Fonctionnement du type BFILE Exemple de création de table contenant le type BFILE Exemple de création de répertoire Exemple de création d un BFILE Exemple de lecture d un BFILE Servlet Généralités Servlet et formulaire Structure d un servlet Exemple d utilisation de servlet Lazy Généralités Fonctionnement Création de nœuds Solution Choix du domaine Modélisation du domaine Modèle relationnel Liste des relations et création des différentes tables

3 4.4 Insertion des données dans la base de données Conception d un servlet pour la récupération des données Installation d un serveur HTTP Création du formulaire Elaboration du servlet Modification du fichier web.xml Vue d ensemble Exemple de requête Choix d un player HTML+TIME Structure d un document HTML+TIME RealONE Installation de Lazy Conception de nœuds SMIL en Lazy Modification du serveur de nœuds Conception de nœuds SMIL Présentation finale Détails des nœuds créés Problèmes rencontrés Conclusion Bibliographie Annexes

4 1. Introduction Au cours de ces dernières années, il y a eu une prise de conscience générale du besoin et de l utilité des technologies multimédias, ceci dans de nombreux domaines, comme la médecine et l éducation. En effet, le multimédia améliore la qualité de l information et fournit un meilleur moyen de la représenter et d interagir avec elle. Ainsi, les applications multimédias enrichissent les applications existantes en intégrant des images, du son, ou encore de la vidéo. Ces différents types de données et leur manipulation apportent de nouveaux défis : par exemple, les bases de données doivent être remises à jour pour supporter ces différents types ; de même, les réseaux doivent réévaluer leurs besoins pour des bandes passantes plus flexibles et plus larges, et on peut par exemple voir l importance du multimédia avec l apparition de réseaux à large bande comme ATM, ISDN, ou encore ADSL. Je vais m intéresser, dans un premier temps, au stockage de ces données multimédias. Les exigences de stockage sont élevées, et il est inconcevable de stocker toutes ces données localement. Ainsi, les bases de données multimédias offre une possibilité de stockage, mais aussi de partage et d interrogation de ces différentes informations. Elles permettent de manipuler des données de type texte, image, son, vidéo, contrairement aux bases de données traditionnelles qui permettent seulement de manipuler des données numériques et des caractères. Ainsi, des fonctionnalités ont du être ajoutées dans les systèmes de gestion de base de données afin de permettre le stockage pour ces données qui peuvent être de taille considérable. De même, il a fallu étendre les langages d interrogation comme SQL qui n étaient pas appropriés pour les flux continus qui surviennent lors de la manipulation de données multimédias. Ensuite, je vais m intéresser à la conception de présentations dynamiques à partir de données stockées dans une base de données multimédia. En effet, nombreuses sont les sources d intérêt dans la création de présentations multimédias, comme par exemple les livres électroniques, les cours à distances ou encore les pages webs dynamiques ; de ce fait, plusieurs modèles et standards correspondant à ces besoins apparaissent, permettant de répondre à des questions du type : quels objets doivent être inclus dans la présentation? à quel moment les objets doivent-ils être affichés? où doivent apparaître les objets sur l écran? 2. Objectifs du travail L objectif final du travail est de pouvoir créer des présentations SMIL dynamiques à partir de diverses données multimédias photos, vidéos, sons, textes stockés dans une base de données, à l aide du langage Lazy. Ces présentations doivent pouvoir interagir entre elles ; l utilisateur doit pouvoir se «promener» dans l information en suivant les liens qui l intéressent. Différentes étapes intermédiaires sont nécessaires pour en arriver là, parmi lesquelles : Comprendre SMIL et apprendre à utiliser ce langage Trouver le(s) type(s) de donnée adéquat pour stocker des données multimédias dans une base de données 4

5 Établir une connexion JDBC avec la base de données Tester le(s) type(s) de données trouvé(s) pour le stockage des données multimédias, au moyen de JDBC Stocker des données multimédias de manière «automatique» à partir de leur répertoire Étudier les servlets afin d un concevoir un permettant de récupérer une donnée multimédia et de l envoyer sur le navigateur client Comprendre Lazy et apprendre à utiliser ce langage (savoir créer des nœuds) Trouver un domaine pour concevoir un exemple de présentation multimédia, ainsi que des données (photos, images, vidéos, sons) le concernant Définir le modèle relationnel pour l exemple de présentation : quelle(s) relation(s) et quel(s) attribut(s) choisir Créer les différentes tables (d après le modèle relationnel) 3. Outils utilisés 3.1 SMIL (Synchronized Multimedia Integration Language) Généralités Une présentation multimédia est composé dans l espace et dans le temps d objets euxmêmes mono ou multimédias qui peuvent être de type continu (temporel) comme le son ou la vidéo ou de type discret (non temporel) comme l image et le texte. Lors de la conception de la présentation vont se poser des problèmes de synchronisation entre les différents médias, et de prise en compte des dépendances spatio-temporelles. En effet, comment définir quel vidéo A doit se jouer à la suite de telle autre vidéo B, et à tel endroit dans la fenêtre de présentation? Ou encore, comment définir qu une séquence vidéo C doit commencer en même temps qu un commentaire D? C est à ce genre de questions qu ont tenté de répondre les membres du W3C (consortium mondial regroupant des industriels et des centres de recherche, dont l'objectif est de développer et promouvoir le Web) en proposant un format de documents multimédia nommé SMIL (Synchronized Multimedia Integration Language). L'objectif de ce format est de permettre à toute personne de spécifier les aspects temporels et visuels de documents multimédias tout en permettant à l utilisateur d interagir avec la présentation au moyen de liens hypertextes. On peut voir ce langage comme une extension du standard HTML (SMIL est un langage de balisage basé sur XML), qui permet de résoudre le problème de coordination et de synchronisation dans l affichage de différents médias sur des sites webs, en utilisant une seule ligne temporelle. Du fait qu elle est basée sur un langage de balisage, une présentation SMIL peut être créée avec un simple éditeur de texte pour tout outil. 5

6 3.1.2 Caractéristiques Une présentation SMIL possède les caractéristiques suivantes : La présentation est composée de un ou plusieurs objets multimédias accessibles au moyen d un URL ; les objets ne sont donc pas physiquement insérés dans le document SMIL et peuvent être de différents types de médias (son, vidéo, image, texte, animation). Ainsi, les composants peuvent être indépendants et se trouver sur différents serveurs webs (ils ne sont récupérés par l application que lors de son exécution) ce qui permet de diviser le contenu multimédia en flux et fichiers séparés et de les jouer comme un seul et unique flux multimédia. De ce fait, la taille d une présentation SMIL est assez réduite. On peut définir le placement temporel ainsi que le placement géométrique des objets multimédias. On peut par exemple définir le temps de début et le temps de fin d un média, ou encore sa durée. On peut également définir la présentation parallèle de deux ou plusieurs médias, ou la présentation en séquence. Un document SMIL possède une seule horloge pour tous ses composants, une seule ligne temporelle. On peut associer des liens hypertextes aux différents composants multimédias ; l utilisateur pourra donc suivre les liens placés dans la présentation et interagir avec cette présentation par le biais des liens proposés. Ainsi, deux utilisateurs visualisant la même présentation, et n ayant pas les mêmes centres d intérêt, pourront accéder aux informations qui les intéressent en suivant simplement les liens qui les concernent. SMIL permet d afficher le média selon les préférences de l utilisateur et les capacités de son système. Il adapte donc la présentation à la bande passante de l utilisateur, et à ses préférences linguistiques. Par exemple, l auteur d une présentation SMIL pourra indiquer quel fichier vidéo jouer selon la bande passante de l utilisateur : «si la bande est supérieure à 56 kbits/s jouer zzz, sinon jouer xxx». La production d une présentation multimédia avec SMIL ne requiert aucune compétence particulière en programmation. C est un langage facile à apprendre, et pour créer et modifier des présentations multimédias, un simple éditeur de texte suffit. SMIL utilise la technologie du streaming, c est à dire qu un média commence à être jouer sans avoir à attendre le téléchargement complet du fichier. Ainsi, par exemple, une application commence à jouer un son avant même qu elle ait chargé la totalité du fichier. Cependant cette technique n est possible que si le serveur web utilisé repose sur un protocole RSTP (Real-time Stream Transport Protocol), et non HTTP Structure d un document SMIL Un document SMIL a pour racine l élément <smil>, et se compose d une en-tête et d un corps. La partie <head> contient toutes les informations descriptives et relatives à la mise en page, alors que la partie <body> contient le corps du document, les informations sur les médias et sur leur comportement, la partie dynamique de la présentation. La structure type d un document SMIL ressemble à ceci : <smil> <head> <meta/> 6

7 <layout> <root-layout/> <region/> </layout> </head> <body> <switch> </switch> <par> </par> <seq> </seq> </body> </smil> A l intérieur de la section <head>, nous avons une partie <meta> qui contient des informations descriptives, comme l auteur ou la date de conception de la présentation, et une partie <layout> qui définit le positionnement et la mise en page de la fenêtre dans laquelle va se jouer la présentation. Cette section contient elle-même deux types de balises. En premier lieu, la balise <root-layout> qui permet de définir les propriétés de la fenêtre de présentation, comme sa dimension et sa couleur de fond. Enfin, la balise <region> permet de définir des zones dans la fenêtre de présentation dans lesquelles les différents médias seront affichés ; chaque région doit avoir un identificateur, un emplacement, et peut avoir une couleur. Dans l exemple suivant, deux régions sont définies, une pour le texte, et une pour l image : <layout> <root-layout id="exemple" title="exemple" width="800" height="600"/> <region id="image" title="image" top="15" left="290"/> <region id="text" title="texte" top="270" left="290"/> </layout> La balise <body> et ses descendants permettent de placer les composants dans les régions définies dans l élément <layout> décrit ci-dessus. Deux balises de base de cette section permettent de contrôler la ligne temporelle : <par> et <seq>. Les différents médias référencés dans un tag <par> sont joués en parallèle, simultanément. En revanche, les médias se trouvant à l intérieur d une balise <seq> sont joués en séquence, c est-à-dire les uns après les autres. Il est possible d imbriquer ces deux types de tag les uns dans les autres pour créer des sous-présentations. Dans l exemple suivant, les images sont affichées en séquence (les unes à la suite des autres) mais en même temps qu un texte descriptif : <body> <seq> <par> <text region="text" src="./media/text1.txt" dur="10s"/> <img region="image" src="./media/img1.gif" dur="10s"/> </par> <par> <text region="text" src="./media/text2.txt" dur="10s"/> <img region="image" src="./media/img2.gif" dur="10s"/> </par> </seq> </body> Maintenant, si on regarde plus précisément comment sont introduits les différents médias dans la présentation, on peut remarquer que chaque média possède sa propre balise. Ainsi sept éléments XML correspondant chacun à un type de média vont permettre de placer les composants dans une présentation. On distingue deux catégories de médias : les médias continus qui ont une durée intrasèque (son, vidéo) et les médias discrets qui n ont pas de durée prédéfinie (images, texte) mais qui pourront en avoir une dans le cadre de la présentation. Les différentes balises sont les suivantes : 7

8 <audio> pour les composants sonores (voix, son ) <video> pour les séquences vidéos <textstream> pour les textes dynamiques, avec déroulement automatique, par exemple <animation> pour les animations, en Flash par exemple <ref> pour tout média continu qui n est pas compris dans un des types ci-dessus <img> pour des images <text> pour des composants textuels Pour tous ces différents tags, l attribut src permet de spécifier l emplacement du média, qu il se trouve dans le répertoire courant ou sur un serveur web distant, et l attribut region permet de définir l emplacement dans lequel le média va se jouer (cet emplacement doit avoir été créé préalablement, voir partie <head>). Il est important de noter qu à l intérieur de balises <par> ou <seq> le temps se déroule de manière automatique ; en effet, un média référencé dans un tag <seq> va se jouer directement à la suite de celui qui le précède. Cependant, si l auteur de la présentation veut contrôler lui-même la ligne temporelle, il est possible de définir le début, la fin ou la durée d un média. Tous les intervalles de temps sont mesurés par rapport à la ligne temporelle de SMIL, qui est propre à l application de présentation. C est l utilisateur qui la contrôle : il a le choix de jouer la présentation, de la faire revenir en arrière, de l avancer ou encore de la stopper. Voici la syntaxe permettant de définir des durées en SMIL : - 15s = 15 secondes - 2.5h = 2 heures 30 minutes min = 1 minute ms = 600 millisecondes Dans l exemple suivant, les médias sont un texte et une image qui se trouvent sur un serveur web (HTTP) ; l image apparaît dans une région appelée image et définie dans la partie <head> du document, de même, le texte apparaît dans une région appelée text. La durée de présentation de chaque média est de 10 secondes : <par> <text region="text" src=" dur="10s"/> <img region="image" src=" dur="10s"/> </par> La balise <switch> permet de définir plusieurs options parmi lesquelles le player SMIL en choisira une lors de l exécution. Ainsi, on peut inclure plusieurs fichiers sons dans une présentation, et celui qui sera jouer sera définit par les préférences linguistiques de l utilisateur. De même, on peut inclure plusieurs images de différentes résolution qui seront jouées selon la bande passante de l utilisateur. A l exécution, dès qu une option est évaluée à "vrai", elle est choisie et on sort du <switch> ; pour cette raison, il est important de définir les élément dans l ordre de préférence, en commençant par ceux qui offrent la présentation de la meilleure qualité. Par exemple, on peut jouer un fichier son différent en fonction de la vitesse de la connexion : <switch> <audio src="manu_chao.mp3" system-bit-rate="56000"/> <audio src="noir_desir.mp3"/> </switch> Jusqu à maintenant, il n y a pas d interaction possible pour l utilisateur, ce dernier est passif. Mais une présentation multimédia n est pas une simple animation que l on doit regarder, elle offre à l utilisateur un choix d itinéraire dans son déroulement au moyen de liens hypertextes. Un lien définit dans une présentation SMIL peut être défini sur tout type de média, et peut 8

9 renvoyer à une autre présentation, à un autre point d entrée dans la présentation, à une page HTML Deux balises peuvent être utilisées pour définir un lien sur un média : <a> et <anchor>. L élément <a> correspond à celui du même nom présent en HTML avec un attribut supplémentaire permettant de contrôler la présentation lorsque le lien est activé. Ainsi, la présentation cible peut remplacer la présentation source ou peut être démarrée dans une nouvelle fenêtre ; de même, si la présentation cible commence dans une nouvelle fenêtre, la présentation source peut continuer de se jouer ou être arrêtée. Cet exemple nous montre comment placer un lien sur une image ; lien qui s ouvrira dans une nouvelle fenêtre et arrêtera la présentation : <a href="exemple.smi" external="true" sourceplaystate="pause"> <img region="image" src="./media/img1.gif" dur="10s"/> </a> La balise <anchor> (renommée <area> en SMIL 2.0) permet, quand à elle, d associer des liens sur des parties d un média ; par exemple, le coin supérieur gauche d une image possède un lien vers une page HTML, et le coin inférieur droit possède un lien vers une autre présentation SMIL. De plus, cette balise permet d associer des liens selon des intervalles de temps ; par exemple, un lien est associé à une image pendant les dix première secondes de présentation, alors qu un autre lien est associé pendant le reste de la présentation. Dans l exemple suivant, un lien est associé seulement avec une partie (rectangulaire) de l image : <img region="image" src="./media/img1.gif" dur="10s"> <area shape="rect" coords="0,0,50,50" href="exemple.smi"/> </img> Je viens de présenter les bases nécessaires à la conception d un document SMIL, mais pour plus de détails je vous conseille vivement d aller voir toutes les possibilités offertes par SMIL sur le site du W3C. Il est bon de savoir, que le W3C a sorti une nouvelle recommandation de SMIL (nommée SMIL 2.0) en août dernier. La grande nouveauté de SMIL 2.0 provient de l introduction d un module d animation qui permet de bouger et de donner des effets aux divers médias apparaissant dans une présentation SMIL. Cependant, à l heure actuelle, et vu la nouveauté de SMIL 2.0, un nombre très restreint de players supportent ce langage Les principaux players SMIL Les players ne supportent pas tous complètement les spécifications de SMIL, et il est bon de tester sa présentation SMIL dans différents players car elle peut se jouer sans problème dans certains, et ne pas se jouer du tout dans d autres!!! SMIL 1.0 : - GriNS, d Oratrix - QuickTime 4.1, d Apple - RealPlayer 8, de RealNetworks - Soja, applet java conçue par Helio SMIL 2.0 : - RealONE, de RealNetworks - GriNS, d Oratrix - Internet Explorer 5.5 et 6, de Microsoft 9

10 3.2 Oracle et les LOBs Généralités Les bases de données multimédias permettent le partage, l accès, et l interrogation de grandes collections d informations multimédias. Ainsi, le second outil utilisé est un système de gestion de bases de données Oracle pour stocker les données utilisées dans les présentations multimédias. Une fois le système de gestion de bases de données choisi, il faut regarder quel(s) sont le(s) type(s) de données adéquat(s) pour stocker des photos, ou tout autre type de données multimédias. A partir de sa version 8, Oracle fournit un certain nombre de types de données qui supportent le stockage de grandes quantités d information jusqu à quatre gigabytes tel que texte, images, vidéo, et son. Ces Larges Objets (ou LOBs) sont stockés soit dans la base, ce sont alors des LOBs internes, soit dans un fichier externe, ce sont des LOBs externes. Ces différents types LOBs sont utilisés pour les données qui sont trop grandes pour être stockées directement dans une table de la base de données ; de ce fait, un locator (un pointeur logique) est stocké dans la table et pointe sur l emplacement des données, qu elles soient à l intérieur, ou hors de la base de données. Comme nous le verrons par la suite, toutes les manipulations de LOBs se font à travers de streams java. Pour stocker des données multimédias dans les versions précédentes d Oracle, il existe diverses manière de faire. Soit il faut utiliser le type Long Raw qui permet de stocker des données binaires de forme quelconque ; cependant, les données déclarées ainsi ne peuvent pas être indexés, ni affichées, ni même interrogées au moyen de SQL*Plus. Soit il faut référencer chaque image en stockant son URL dans la base. Il est facile de voir comment la présence des différents médias est devenue prépondérante dans les applications actuelles, et les concepteurs d Oracle s en sont très bien rendus compte en permettant ce stockage de données binaires de taille variable. Prenons l exemple d un professeur qui pourrait enregistrer des versions audio des cours qu il doit donner, et les stocker dans la base, tout comme les présentations qui les accompagnent. Le jour du cours (ou la veille), il pourrait récupérer un certain nombre de ces données dans un fichier SMIL (au moyen d un langage comme LAZY), et mettre son cours en ligne, sa présence en classe n est même pas indispensable!!! Je vais seulement m attarder sur les deux types de LOBs qui conviennent particulièrement pour le stockage de données multimédias ou pour tout autre type de données binaires nonstructurées en laissant de côté le type permettant le stockage de textes (les CLOBs). Deux types de données conviennent particulièrement : les BLOBs qui sont des LOBs internes et les BFILEs qui sont des LOBs externes Le type BLOB Permet de stocker des données binaires brutes (non structurées) dont la taille ne dépasse pas les 4 gigabytes. Les données sont stockées dans la base de données, ce qui permet d optimiser l espace et de fournir un accès plus rapide à ces dernières. Les données BLOB sont accédées et référencées au moyen d un pointeur logique qui est stocké dans la table de la base de données et qui pointe vers les données. 10

11 3.2.3 Le type BFILE Permet de stocker un fichier binaire dans un fichier externe à la base de données Oracle (sur disque dur, CDROM, CdPhoto, ). Le fichier peut avoir une taille maximale de 4 gigabytes également. Une colonne ou un attribut BFILE stocke un locator de fichier qui pointe vers le fichier externe contenant les données. L accès aux données n est possible qu en lecture, il n est donc pas possible de modifier un BFILE. Le système d exploitation sous-jacent doit maintenir la durabilité et l intégrité du fichier ; l administrateur de la base de données doit assurer que le fichier existe et que les divers processus Oracle ont la permission de lire le fichier Manipulation de BLOB Cette section décrit comment utiliser JDBC, et plus particulièrement les classes de oracle.sql.* pour travailler avec les BLOBs. En effet, les principales méthodes permettant la lecture et l écriture de données BLOBs sont définies dans le package oracle.sql.* (téléchargeable sur le site d Oracle), tout comme la plupart des méthodes permettant la manipulations de données BFILEs, qui sont le sujet de la prochaine section. Pour que le compilateur java trouve ce package, il est nécessaire de le définir dans le classpath (SET CLASSPATH=k:\memoire\oracle817\classes12.zip) Fonctionnement du type BLOB Pour travailler avec des données BLOBs, on doit tout d abord obtenir leur locator (sorte de pointeur logique); ensuite, il est possible de lire des données ou d écrire des données dans un BLOB, et d effectuer toutes sortes de manipulations sur ces données. Le locator, équivalent d un pointeur en programmation, est stocké dans la table de la base. Ainsi, lors de chaque nouvelle entrée dans la table après avoir préalablement créé la table contenant un attribut de type BLOB il faut initialiser la valeur du BLOB à «vide», ce qui va créer le locator du BLOB ; ensuite seulement on pourra insérer la donnée multimédia au moyen de son locator. On peut récupérer le pointeur du BLOB grâce à la méthode getblob() ; en effet, le résultat fourni par une requête SELECT nous renvoie le locator et non pas directement les données binaires. Une fois que l on a le pointeur logique, on peut lire et écrire les données BLOBs au moyen de JDBC. Les données BLOBs sont représentées sous forme de streams java ; contrairement aux principaux streams, il est possible d accéder aux données à n importe quel moment durant la connexion du fait que le locator des données BLOBs est stocké dans la table. Pour lire des données, on utilise tout d abord la méthode getbinarystream() pour récupérer le BLOB sous forme de stream, puis on utilise la méthode read() pour le lire. De même, pour écrire un BLOB, on utilise tout d abord la méthode getbinaryoutputstream() pour le récupérer sous forme de stream de sortie, puis on utilise la méthode write() pour l écrire. A noter que la méthode write() écrit directement dans la base de données lorsque l on écrit sur le stream de sortie : il n est pas nécessaire d exécuter un UPDATE/COMMIT pour écrire les données. De même, la suppression d un BLOB supprime à la fois les données BLOBs et leur pointeur logique. Pour illustrer ces explications je vais expliquer chacune des différentes étapes au moyen d un exemple. Tous les exemples suivants sont des méthodes qui peuvent être appelées dans le code de la connexion [7], après la création de la connexion, et avant sa fermeture, bien entendu. 11

12 Exemple de création de table contenant le type BLOB Je n ai créé qu une seule table, nommée MULTIMEDIA, avec comme clé primaire un numéro (No_Blob) qui est incrémenté à chaque nouvelle entrée dans la table. Les autres attributs sont le nom, la description, le type de la donnée multimédia, et bien sûr la donnée ellemême. A noter que le type est le type MIME ; par exemple, si l on insère une image jpeg dans la base de données, son type sera image/jpeg. private void creertableblob(){ try{ Statement stmt=conn.createstatement(); stmt.execute("create table MULTIMEDIA(No_blob Number(5) not null primary key, Nom Varchar2(80), Donnee Blob, Description Varchar2(500), Type Varchar2(50))"); stmt.close(); catch(sqlexception e){ System.out.println("requete ERROR: "+e.getmessage()+e.getsqlstate()+e.geterrorcode()); NB : Lorsque l on définit un attribut de type BLOB dans une table, on peut spécifier les différentes caractéristiques de stockage de l objet Exemple d initialisation et d écriture d un BLOB Cet exemple montre comment insérer dans un BLOB un fichier passé en paramètre, fichier qui doit se trouver dans le répertoire courant. Tout d abord, on récupère le nom du fichier ainsi que le plus grand identificateur de BLOB (No_blob) présent dans la table, que l on incrémente de un. private void insererunblob(file fichier){ try{ Statement stmt=conn.createstatement(); ResultSet result=stmt.executequery("select max(no_blob) from MULTIMEDIA"); int test=0; String name=""; String typ="none"; name=fichier.getname(); if(result.next()){ test=result.getint(1); result.close(); test=test+1; Puis, on regarde l extension du fichier grâce à son nom, ce qui va nous permettre de définir son type MIME. Ainsi, pour un fichier dont l extension commence par j (pour jpeg) sont type sera : image/jpeg. for(int z=0;z<name.length();z++){ if(name.charat(z)=='.'){ if((name.charat(z+1)=='j') (name.charat(z+1)=='j')) typ="image/jpeg"; if((name.charat(z+1)=='g') (name.charat(z+1)=='g')) 12

13 typ="image/gif"; break; Ensuite, on insère une nouvelle entrée dans la table avec ces différentes données, tout en initialisant la valeur du BLOB à «vide» au moyen de empty_blob(), ce qui va créer son locator. stmt.execute("insert INTO MULTIMEDIA values ('"+test+"','"+name+"',empty_blob(),null,'"+typ+"')"); Finalement, on récupère la valeur du locator du BLOB créé grâce à une requête SQL du type SELECT et à la méthode getblob(), puis on ouvre un stream de sortie sur ce dernier (OutputStream) dans lequel on écrit le fichier, qui a préalablement été ouvert sous forme de stream (InputStream). Les méthodes read() et write() sont utilisées pour la lecture et l écriture, et la taille du buffer idéale est déterminée grâce à la méthode getchunksize() ; une fois l écriture complète, on ferme les deux streams. ResultSet results=stmt.executequery("select Donnee FROM MULTIMEDIA WHERE No_blob='"+test+"' FOR UPDATE"); //on prend le locator du blob if(results.next()){ BLOB blobloc=((oracleresultset)results).getblob(1); try{ InputStream entree=new FileInputStream(fichier); //on ouvre un stream de sortie pour le blob OutputStream sortie=blobloc.getbinaryoutputstream(); int chunk=blobloc.getchunksize() ; byte[] buffer=new byte[chunk]; int nbread=0 ; //nombres de bytes lus while ((nbread=entree.read(buffer))!= -1) //lecture sortie.write(buffer,0,nbread); //ecriture entree.close(); sortie.close(); NB : Il est bien sûr possible d insérer tout un répertoire de données multimédias dans la base de données, en passant son nom en paramètre, et selon les mêmes procédés Exemple de lecture d un BLOB Cet exemple montre comment récupérer un BLOB dont le nom est passé en paramètre, en le copiant dans un répertoire temporaire sous le même nom. Dans un premier temps, on récupère le nom et le locator du BLOB au moyen d une requête SQL du type SELECT et aux méthodes getblob() et getstring(). private void recupererunblob(string name){ try{ Statement stmt=conn.createstatement(); ResultSet results=stmt.executequery("select Donnee,Nom FROM MULTIMEDIA WHERE Nom='"+name+"'"); //on prend le locator du blob if(results.next()){ BLOB blobloc=((oracleresultset)results).getblob(1); String n=results.getstring(2); 13

14 Puis on ouvre un stream d entrée sur ce dernier (InputStream) afin de permettre la lecture des données BLOBs, que l on va écrire dans un fichier (FileOutputStream) qui porte le même nom que celui du BLOB, et qui va se trouver dans le répertoire C:\temp. Finalement, une fois l écriture complète, on ferme les deux streams. Il ne nous reste qu à regarder dans le répertoire temporaire pour vérifier que le fichier a bien été créé. try{ InputStream entree=blobloc.getbinarystream(); FileOutputStream sortie=new FileOutputStream("C:\\temp\\"+n); int chunk=blobloc.getchunksize() ; byte[] buffer=new byte[chunk]; int nbread=0 ; //nombres de bytes lus while ((nbread=entree.read(buffer))!= -1) //lecture sortie.write(buffer,0,nbread); //ecriture sortie.flush(); sortie.close(); entree.close(); Manipulation de BFILE Cette section décrit comment utiliser JDBC et les classes de oracle.sql.* pour travailler avec les BFILEs Fonctionnement du type BFILE Dans le cas des BFILEs, c est également un locator qui se trouve stocké dans la base de données, mais celui-ci pointe vers un fichier externe à la base de données, stocké quelque part dans le système de fichiers. Ainsi, pour la lecture, on procède de la même manière que pour un BLOB : on récupère le pointeur logique au moyen d une requête SQL du type SELECT, puis on ouvre un stream pour lire les données. Les BFILEs sont read-only : on ne peut donc pas insérer de données ni écrire dans un BFILE, ce qui est possible avec un BLOB (voir section précédente). Avant de définir un BFILE, il est donc nécessaire de s assurer que le fichier que l on veut référencer existe préalablement, et il faut créer un objet répertoire qui est un alias du chemin d accès au fichier. Ainsi, lors de la création d un BFILE, on doit spécifier le nom du fichier et le répertoire dans lequel le fichier se trouve ; il n y a pas d écriture des données dans la base de données. L administrateur de la base de données doit s assurer que la lecture est permise sur le fichier, et vérifier que les déplacements et/ou suppression de fichiers ne porte pas atteinte à l intégrité de la base de données. Il est à noter que la plupart des méthodes applicables aux BFILEs, comme getdiralias() et getname() ne nécessitent pas l ouverture du fichier ; seules les méthodes permettant de le lire et de l afficher requièrent son ouverture. A noter que la suppression d un BFILE supprime seulement le pointeur logique, mais pas le fichier qui était référencé. Pour illustrer ces explications je vais expliquer chacune des différentes étapes au moyen d un exemple. Tous les exemples suivants sont des méthodes qui peuvent être appelées dans le code de la connexion [7], après la création de la connexion, et avant sa fermeture, bien entendu. 14

15 Exemple de création de table contenant le type BFILE Comme dans le cas des BLOBs, je n ai créé qu une seule table, nommée PHOTO, avec comme clé primaire un numéro (No_bfile) qui est incrémenté à chaque nouvelle entrée dans la table. Les autres attributs sont similaires à ceux présents dans la table MULTIMEDIA. private void creertablebfile(){ try{ Statement stmt=conn.createstatement(); stmt.execute("create table PHOTO(No_bfile Number(5) not null primary key, Nom Varchar2(80), Photo Bfile, Description Varchar2(500), Type Varchar2(25))"); stmt.close(); catch(sqlexception e){ System.out.println("requete ERROR: "+e.getmessage()+e.getsqlstate()+e.geterrorcode()); Exemple de création de répertoire Cet exemple montre comment définir le répertoire dans lequel le fichier se trouve ; ce répertoire est un alias du chemin d accès au fichier. private void creerrepertoirebfile(){ try{ Statement stmt=conn.createstatement(); stmt.execute("create OR REPLACE DIRECTORY img AS '/user/l1/merat7/memoire/multimedia'"); System.out.println("Repertoire cree..."); stmt.close(); catch(sqlexception e){ System.out.println("requete ERROR: "+e.getmessage()+e.getsqlstate()+e.geterrorcode()); NB : A noter que le répertoire ainsi créé se nomme IMG et non pas img, car Oracle convertit tout en majuscules. De plus, pour pouvoir créer un répertoire, il faut avoir la permission CREATE ANY DIRECTORY de l administrateur de la base de données ; de même pour supprimer un répertoire, il faut avoir la permission DROP ANY DIRECTORY Exemple de création d un BFILE Cet exemple montre comment créer un BFILE d un fichier passé en paramètre, fichier qui doit se trouver dans le répertoire définit au point précédent. Tout d abord, on récupère le nom du fichier ainsi que le plus grand identificateur de BFILE (No_bfile) présent dans la table, que l on incrémente de un. private void insererunbfile(file fichier){ try{ Statement stmt=conn.createstatement(); ResultSet result=stmt.executequery("select max(no_bfile) from PHOTO"); int test=0; 15

16 String name=""; String typ="none"; name=fichier.getname(); if(result.next()){ test=result.getint(1); result.close(); test=test+1; Puis, on regarde l extension du fichier grâce à son nom, ce qui va nous permettre de définir son type MIME. Ainsi, pour un fichier dont l extension commence par j (pour jpeg) sont type sera : image/jpeg. for(int z=0;z<name.length();z++){ if(name.charat(z)=='.'){ if((name.charat(z+1)=='j') (name.charat(z+1)=='j')) typ="image/jpeg"; if((name.charat(z+1)=='g') (name.charat(z+1)=='g')) typ="image/gif"; break; Enfin, on insère une nouvelle entrée dans la table avec ces différentes données. Il n y a pas besoin d ouvrir de streams d entrée et de sortie car on n écrit pas le fichier, on le référence; ainsi, la création d un BFILE est beaucoup plus simple que celle d un BLOB, elle s effectue simplement au moyen de bfilename( nom_répertoire, nom_donnee ). stmt.execute("insert INTO PHOTO values ('"+test+"','"+name+"',bfilename('img','"+name+"'),null,'"+typ+"')"); System.out.println("BFILE :"+name+" ok"); stmt.close(); NB : Une conséquence de cette sémantique : il est possible d avoir plusieurs enregistrements BFILEs différents qui référencent tous le même fichier Exemple de lecture d un BFILE Cet exemple montre comment récupérer un BFILE dont le nom est passé en paramètre, en le copiant dans un répertoire temporaire sous le même nom. Dans un premier temps, on récupère le nom et le locator du BFILE au moyen d une requête SQL du type SELECT et aux méthodes getbfile() et getstring(). private void recupererunbfile(string name){ try{ Statement stmt=conn.createstatement(); ResultSet results=stmt.executequery("select Photo,Nom FROM PHOTO WHERE Nom='"+name+"'"); //on prend le locator du bfile if(results.next()){ BFILE bfileloc=((oracleresultset)results).getbfile(1); String n=results.getstring(2); Puis, on ouvre le fichier grâce à la méthode openfile(), et on ouvre un stream d entrée sur ce dernier (InputStream) afin de permettre la lecture des données BFILEs, que l on va écrire 16

17 dans un fichier (FileOutputStream) qui porte le nom du BFILE et qui va se trouver dans le répertoire C:\temp. Finalement, une fois l écriture complète, on ferme les deux streams ainsi que le fichier. Il nous reste qu à regarder dans le répertoire temporaire pour vérifier que le fichier a bien été créé. try{ bfileloc.openfile(); InputStream entree=blobloc.getbinarystream(); //on ouvre un stream de sortie pour le blob FileOutputStream sortie=new FileOutputStream("C:\\temp\\"+n); byte[] buffer=new byte[10]; int nbread=0 ; //nombres de bytes lus while ((nbread=entree.read(buffer))!= -1) //lecture sortie.write(buffer,0,nbread); //ecriture sortie.flush(); sortie.close(); entree.close(); bfileloc.closefile(); 3.3 Servlet Généralités Une fois le langage à utiliser pour la conception de présentations multimédias ainsi qu un système de gestion de bases de données choisis, il faut maintenant s intéresser à l outil qui va permettre de récupérer les données multimédias de la base de données pour les afficher dans une présentation. Pour ce faire, j ai choisi comme outil les servlets qui permettent de gérer des requêtes HTTP et de fournir au client une réponse dynamique. Les servlets sont des programmes java basés sur les packages javax.servlet.* et javax.servlet.http.* Un servlet peut générer dynamiquement une page HTML ou toute autre ressource web comme une image, un son, un texte Cela permet de construire une page en fonction des souhaits du client, par exemple au moyen d informations saisies dans un formulaire, en utilisant une base de données ou toute autre sorte de ressources locales ou distantes. Ils permettent donc de remédier à certains défauts des pages statiques, comme l impossibilité de renvoyer une page personnalisée selon le visiteur ou encore l impossibilité de créer une page dynamiquement selon les entrées d une base de données. Un servlet peut être comparé à un applet mais s exécutant du côté du serveur (comme les CGI, les scripts ASP ou PHP). Les servlets s exécutent à l aide d un moteur de servlet qui établit le lien entre le serveur web et le servlet ; ces derniers ne sont chargés qu une fois par le serveur, au démarrage du serveur ou lors de la première requête du client. Les servlets sont donc actifs en permanence, il n y a pas besoin de créer un processus à chaque requête HTTP. Un servlet possède les principaux avantages suivants : Il est indépendant du système d exploitation. Il est indépendant du serveur web utilisé (Tomcat, IIS, ). Il est facile à développer, car en java ; possibilité de réutilisation car encapsulation de composants similaires possible, et possibilité d utiliser toutes les API java. 17

18 3.3.2 Servlet et formulaire Les servlets rendent très simple la récupération de données envoyées par un formulaire HTML, et l envoi d informations sur le navigateur client en fonction de ces données reçues. Pour utiliser un formulaire avec un servlet, il suffit de mettre le nom du servlet qui réceptionnera les informations comme valeur de l attribut action de la balise <form> et de spécifier la méthode HTTP à utiliser au moyen de l attribut method. Dans l exemple cidessous, le formulaire sera traité par un servlet nommé req et envoyé au moyen de la méthode GET. <form action="req" method=get> Requete SQL: <input type=text size=80 name=donnee> <br> <input type=submit> </form> Deux méthodes permettent de définir sous quelle forme seront envoyées les données d un formulaire : Premièrement, la méthode GET qui permet d envoyer les éléments du formulaire au moyen de l URL du script, en ajoutant l ensemble des paires nom/valeur à l URL du script, séparé de celui-ci par un point d interrogation, ce qui donne une URL du type: :8080/examples/req?donnee=blablabla La méthode POST est une alternative à la méthode GET, elle code les informations de la même manière que la méthode GET mais envoie les données dans le corps de la requête Structure d un servlet Maintenant, intéressons-nous à la structure du servlet permettant de traiter un formulaire. Vous avez pu lire qu un servlet n est chargé qu une fois par le serveur, au démarrage du serveur ou lors de la première requête du client ; en fait, c est la méthode init() qui est invoquée à chaque instantiation du servlet. De même, la méthode destroy() est appelée lors du déchargement du servlet. Ainsi, si notre servlet doit effectuer toute sorte de manipulations sur une base de données, on écrira le code de la connexion dans la méthode init(), ce qui permettra d établir la connexion à la base de donnée au démarrage du serveur, et non à chaque requête d un utilisateur. La structure de base du servlet java traitant un formulaire, avec accès à une base de données, est la suivante : Import java.io.* ; Import javax.servlet.* ; Import javax.servlet.http.* ; Public class req extends HttpServlet { public void init(servletconfig config) throws ServletException { //connexion a la base de donnée public void destroy() { //fermeture de la connexion 18

19 public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { //analyse de la requête (request) //lecture des données de formulaire HTML //production de la réponse (response) //envoi de la réponse au navigateur L objet HTTPServletRequest encapsule la requête du client ; il contient l ensemble des paramètres (champs de formulaire) passés au servlet. L objet HTTPServletResponse permet quant à lui de renvoyer une réponse au client. La requête est traitée au moyen d une des deux méthodes doget() et dopost(), selon la méthode utilisée pour l envoi du formulaire (GET et POST) Exemple d utilisation de servlet L utilisation de servlets peut se résumer dans l exemple suivant: Navigateur client Requête HTTP (par formulaire) réponse Serveur web Moteur de servlets (Tomcat) servlet Requête SQL réponse Base de données (Oracle) Dans un premier temps, l utilisateur rempli un formulaire dans son navigateur web, et l envoie. Le servlet, tournant sur un serveur web grâce à un moteur de servlets, récupère les données du formulaire et envoie une requête SQL à la base de donnée en fonction des informations remplies par l utilisateur. La base de données exécute la requête puis donne la réponse au servlet, qui se charge de la retourner au client. 3.4 Lazy Généralités Le dernier outil utilisé est le langage Lazy (développé par le groupe de recherche ISI du Centre Universitaire d Informatique de l Université de Genève) qui permet la publication de bases de données sur le web ; en d autres termes, de présenter le contenu de bases de données sous forme d hyperdocuments. Lazy est un langage déclaratif qui offre la possibilité de créer plusieurs vues différentes de données similaires, selon le point de vue de l utilisateur, ce qui permet de personnaliser les documents hypertextes. Par exemple, des mêmes données pourront se trouver sous forme d un tableau dans une page HTML et sous 19

20 forme d une liste dans une autre page selon les besoins et l usage que vont en faire les différents groupes d utilisateurs Fonctionnement Chaque page web est une instance d un nœud Lazy ; une vue hypertextuelle est un ensemble d instances de nœud (et des liens qui existent entre ces instances). Un nœud est produit à partir d une ou de plusieurs tables de la base de données, et se compose d éléments qui vont former le contenu du nœud, ainsi que de liens vers d autres nœuds. Les nœuds sont écrits en Lazy, et les instances de nœuds (les pages web) sont générées dynamiquement grâce à un serveur de nœud qui prend comme entrée une forme compilée de chacun des nœuds. Ainsi, le système Lazy est composé de : Un langage déclaratif pour définir le contenu de chaque nœud et les liens que le nœud peut avoir avec d autres noeuds. L utilisateur va donc créer un nœud portant sur un ou plusieurs attributs d une (ou de plusieurs) table(s) de la base de données (il faut donc préalablement connaître le schéma des tables de la base de données), en respectant la sémantique du langage Lazy et en donnant l extension.lz (ou.lazy) à son fichier. Un compilateur pour traduire les nœuds en interrogation de la base de données. Il faut donc compiler le nœud en lançant la commande java lc nom_du_noeud ; là, le compilateur va produire une requête SQL du type SELECT FROM... WHERE... qu'il va mettre dans la table nodes (qui se trouve dans la base de données) avec pour nom le nom du noeud. Un serveur de nœuds qui va récupèrer la requête (produite par le compilateur) dans la table nodes et va l exécuter pour produire un document XML, HTML, SMIL... selon les tags insérés dans le nœud lors de sa conception Création de nœuds Comme je l ai déjà mentionné ci-dessus, un nœud permet de décrire comment sera générée une page web à partir de données stockées dans la base de données. Ainsi, à l intérieur de chaque nœud il faut spécifier : - La table(s) sur laquelle porte le noeud - Les critères de sélection et d ordonencement des données - Les éléments qui forment le contenu du nœud - Les liens éventuels vers d autres noeuds A noter que le nœud doit être créer dans un fichier source Lazy, qui est un simple fichier texte muni de l extension.lz ou.lazy. La définition d un nœud prend la forme suivante : define Node name [paramètres ] Elements From table_name Selected by expression 20

21 Order by expression end Un élément peut être un string, un nombre, un attribut ou encore une expression arithmétique. Les éléments peuvent être des tags d un langage de balisage (comme HTML ou SMIL), et ils prennent la syntaxe suivante : <title> (Petit exemple) équivaut à la notation HTML <title> Petit exemple </title> Tous les éléments spécifiés entre accolades { sont répétés pour chaque tuple de la table qui satisfait aux exigences du selected by. Les éléments placés avant et après les accolades { ne sont, quant à eux, générés qu une seule fois. define node SMIL_image <smil> ( <head>( <meta name="title" content="petit Exemple fait avec SMIL">(), <layout> ( <region id="image1" title="image1" top="0" left="0">() ) ), <body> ( <seq>( {<img region="image1" src=nom dur="5s">() ) ) ) from Multimedia selected by type="image/jpeg" order by no_blob end L exemple de nœud précédent, une fois compilé, puis exécuté par le serveur de nœuds, produira un document SMIL contenant toutes les images de la base de données qui sont du type image/jpeg et qui se trouvent dans la table Multimedia. L attribut src de la balise <img> prendra la valeur de l attribut nom de la table Multimedia pour chacune des images. Ainsi, si les éléments de la table Multimedia et de type image/jpeg ont pour nom : a.jpg, b.jpg, c.jpg, le résultat ressemblera à ceci : <smil> <head> <meta name="title" content="petit Exemple fait avec SMIL"/> <layout> <region id="image1" title="image1" top="0" left="0"/> </layout> </head> <body> <seq> <img src="a.jpg" dur="5s"/> <img src="b.jpg" dur="5s"/> <img src="c.jpg" dur="5s"/> </seq> </body> </smil> La définition d un nœud peut prendre un certain nombre de paramètres. L exemple de nœud suivant prend un paramètre a qui va permettre de définir quelles images afficher. Ainsi, 21

22 seules les images ayant un identificateur supérieur au paramètre a (qui doit donc être de type numérique) vont être affichées : define node test[a] <p> ("Liste des images à partir de",a) { from multimedia selected by no_blob>=a end On peut également spécifier qu un élément est l origine d un autre nœud en utilisant la notation href, et même que le contenu d un autre nœud est inclus dans le nœud que l on définit, à l endroit indiqué par la notation include. Ainsi, le nœud suivant possède un lien vers le nœud SMIL_image et contient le contenu du nœud test : define node essai[a] href SMIL_image("clickez ici pour les images"), include test[a] { from multimedia selected by no_blob>=a end 4. Solution Une fois les différents outils trouvés, compris et appris, je peux maintenant m attaquer à l objectif final du travail qui est de pouvoir présenter le contenu d une base de données multimédia sous la forme de documents SMIL générés à partir des images, photos, sons, textes, et autres vidéos stockés dans la base de données Oracle, aux moyen de nœuds Lazy. 4.1 Choix du domaine La première étape du travail a été celle du choix d un domaine pour ma présentation. J ai tout naturellement choisi comme sujet le hockey sur gazon, sport que je pratique depuis plus d une dizaine d années ; il se joue avec une canne et une balle, et oppose deux équipes de onze joueurs. Il m a donc fallu dans un premier temps rechercher des données multimédias concernant ce sport. Cela n a pas été une mince affaire car ce loisir, bien qu il soit un des plus vieux sports olympiques, est encore très peu connu, et j ai mis un certain temps à trouver des vidéos, photos et autres images sur le web. Une fois le domaine choisi, il m a fallu le modéliser. 22

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Java et les bases de données

Java et les bases de données Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

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

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau) CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org Les sites Internet dynamiques contact : Patrick VINCENT pvincent@erasme.org Qu est-ce qu un site Web? ensemble de pages multimédia (texte, images, son, vidéo, ) organisées autour d une page d accueil et

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

4. SERVICES WEB REST 46

4. SERVICES WEB REST 46 4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ...

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ... HTTP 1.1 Place de http dans le modèle osi : HyperText Transfer Protocol...... TCP IP...... HTTP est un protocole «sans état» : chaque page WEB est transmise dans une connexion séparée (sauf pour les connections

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Application Web et J2EE

Application Web et J2EE Application Web et J2EE Servlet, JSP, Persistence, Méthodologie Pierre Gambarotto Département Informatique et Math appli ENSEEIHT Plan Introduction 1 Introduction Objectfis

Plus en détail

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

FileMaker Server 12. publication Web personnalisée avec XML

FileMaker Server 12. publication Web personnalisée avec XML FileMaker Server 12 publication Web personnalisée avec XML 2007-2012 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker et Bento sont

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

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

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France Développement d applications Internet et réseaux avec LabVIEW Alexandre STANURSKI National Instruments France Quelles sont les possibilités? Publication de données Génération de rapports et de documents

Plus en détail

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

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

TP Programmation Java / JDBC / Oracle

TP Programmation Java / JDBC / Oracle TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Développement des Systèmes d Information

Développement des Systèmes d Information Développement des Systèmes d Information Axe ISI Camille Persson Institut Fayol / LSTI / ISCOD École Nationale Supérieure des Mines de Saint-Etienne 158 cours Fauriel, 42000 Saint-Etienne persson@emse.fr

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives : ntroduction 1/28 2/28 Anne-Cécile Caron Licence MAGE - Bases de Données 2013-2014 Application base de données Pour le développeur : Quel est l environnement? type de client (mode client serveur, intranet,...)

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Programmation Internet Cours 4

Programmation Internet Cours 4 Programmation Internet Cours 4 Kim Nguy ên http://www.lri.fr/~kn 17 octobre 2011 1 / 23 Plan 1. Système d exploitation 2. Réseau et Internet 3. Web 3.1 Internet et ses services 3.1 Fonctionnement du Web

Plus en détail

Une introduction à la technologie EJB (2/3)

Une introduction à la technologie EJB (2/3) Une introduction à la technologie EJB (2/3) 1 Les singletons des EJB 3.1 1.1 Synchronisation gérée manuellement Depuis la version 3.1, des EJB Statless à instance unique sont maintenant disponibles : ce

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Architectures web/bases de données

Architectures web/bases de données Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est

Plus en détail

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Au cours de ce TP, vous allez voir comment PHP permet aux utilisateurs, une interaction avec

Plus en détail

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

Plus en détail

I4 : Bases de Données

I4 : Bases de Données I4 : Bases de Données Passage de UML au modèle relationnel Georges LOUIS Département Réseaux et Télécommunications Université de La Rochelle Module I4 2008-2009 1 G.Louis Sommaire 1 Des classes aux tables

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie 1 / 22 Technologies Web Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya Université Pierre et Marie Curie Rappel 2 / 22 Problématique Quelles technologies utiliser

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Accès aux bases de données

Accès aux bases de données 13 Accès aux bases de données Les bases de données fournissent un mécanisme de stockage persistant pour les données d application et dans bien des cas, elles sont essentielles au fonctionnement des applications.

Plus en détail

Introduction à Microsoft InfoPath 2010

Introduction à Microsoft InfoPath 2010 Introduction à Microsoft InfoPath 2010 Couplé à Microsoft SharePoint Designer 2010, InfoPath 2010 simplifie la création de solutions de bout en bout sur SharePoint Server 2010, qui contiennent des formulaires

Plus en détail

Pratique et administration des systèmes

Pratique et administration des systèmes Université Louis Pasteur Licence Informatique (L2) UFR de Mathématiques et Informatique Année 2007/2008 1 But du TP Pratique et administration des systèmes TP10 : Technologie LAMP Le but de ce TP est de

Plus en détail

Bien architecturer une application REST

Bien architecturer une application REST Olivier Gutknecht Bien architecturer une application REST Avec la contribution de Jean Zundel Ce livre traite exactement du sujet suivant : comment faire pour que les services web et les programmes qui

Plus en détail

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall Internet DNS World Wide Web Mécanismes de base Exécution d'applications sur le web Divers Proxy, fire-wall 1 Les services usuels de l Internet Services principaux (applications) disponibles sur l Internet

Plus en détail

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. Connexion à 4D Server depuis une page ASP Par Noreddine MARGOUM, Technicien Contrôle Qualité, 4D S.A. Note technique 4D-200403-08-FR Version 1 Date 1 Mars 2004 Résumé Le propos de cette note technique

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation

Plus en détail

L3 informatique TP n o 2 : Les applications réseau

L3 informatique TP n o 2 : Les applications réseau L3 informatique TP n o 2 : Les applications réseau Sovanna Tan Septembre 2009 1/20 Sovanna Tan L3 informatique TP n o 2 : Les applications réseau Plan 1 Transfert de fichiers 2 Le Courrier électronique

Plus en détail

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

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Sommaire 1. Objectifs et intérêts... 2 2. Intégrer le driver SQL Server dans SJSAS 9... 2 2.1. Télécharger

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un

Plus en détail

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

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7 Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Petite définition : Présentation :

Petite définition : Présentation : Petite définition : Le Web 2.0 est une technologie qui permet la création de réseaux sociaux, de communautés, via divers produits (des sites communautaires, des blogs, des forums, des wiki ), qui vise

Plus en détail

Adresse directe fichier : Adresse url spécifique sur laquelle le lien hypertext du Client doit être

Adresse directe fichier : Adresse url spécifique sur laquelle le lien hypertext du Client doit être GLOSSAIRE Adresse directe fichier : Adresse url spécifique sur laquelle le lien hypertext du Client doit être redirigé pour permettre l activation du Service. Adresse IP : Numéro qui identifie chaque équipement

Plus en détail

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5 ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5 Informations juridiques Copyright 2010 Adobe Systems Incorporated and its licensors. All rights reserved. Administration d Adobe LiveCycle Mosaic 9.5 13 octobre

Plus en détail

A. Architecture du serveur Tomcat 6

A. Architecture du serveur Tomcat 6 Administration du serveur A. Architecture du serveur Tomcat 6 La compréhension de l architecture interne du serveur Tomcat 6 est un pré-requis indispensable pour bien en maîtriser l administration et la

Plus en détail

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic Bases de données Page 1 de 11 1- Objectifs généraux Bases de données Prof. : Dzenan Ridjanovic acquérir les principes et concepts fondamentaux dans le domaine des bases de données; développer les connaissances

Plus en détail

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT FileMaker Server 11 Publication Web personnalisée avec XML et XSLT 2007-2010 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker est une

Plus en détail

< Atelier 1 /> Démarrer une application web

< Atelier 1 /> Démarrer une application web MES ANNOTATIONS SONT EN ROUGE : Axel < Atelier 1 /> Démarrer une application web Microsoft France Tutorial Découverte de ASP.NET 2.0 Sommaire 1 INTRODUCTION... 3 1.1 CONTEXTE FONCTIONNEL... 3 1.2 CONTEXTE

Plus en détail

2 Chapitre 1 Introduction

2 Chapitre 1 Introduction 1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné

Plus en détail

Gestion de stock pour un magasin

Gestion de stock pour un magasin Département d Informatique Université de Fribourg, Suisse http://diuf.unifr.ch Gestion de stock pour un magasin Stock online utilise ASP/MS-Access DO Thi Tra My No étudiant : 05-333-750 Travail de séminaire

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING Durée : 3J / 21H Formateur : Consultant expert en PAO et Web-marketing. Groupe de : 4 max Formation au web marketing Objectifs : Mettre en oeuvre des

Plus en détail

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP) Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP) Définition (G. Gardarin) Entrepôt : ensemble de données historisées variant

Plus en détail

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

SIO-65291 Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault SIO-65291 Page 1 de 5 1- Objectifs généraux Applications Web dynamiques Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault acquérir les principes et concepts fondamentaux dans le domaine d'applications

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Les services usuels de l Internet

Les services usuels de l Internet Les services usuels de l Internet Services principaux (applications) disponibles sur l Internet Courrier électronique (mail) - protocole SMTP (Simple Mail Transfer Protocol) inclut maintenant tous types

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09 INFORMATIQUE & WEB Code du diplôme : CP09 Passionné par l informatique et le web, vous souhaitez obtenir une certification dans un domaine porteur et enrichir votre CV? PARCOURS CERTIFICAT PROFESSIONNEL

Plus en détail

Diffuser un contenu sur Internet : notions de base... 13

Diffuser un contenu sur Internet : notions de base... 13 Diffuser un contenu sur Internet : notions de base... 13 1.1 Coup d œil sur l organisation de cet ouvrage.............. 15 Préambule : qu est-ce qu une page web?................ 16 À propos du HTML...........................

Plus en détail

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

Création d'un site dynamique en PHP avec Dreamweaver et MySQL Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du

Plus en détail

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

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :

Plus en détail

Les architectures 3-tiers Partie I : les applications WEB

Les architectures 3-tiers Partie I : les applications WEB Les architectures 3-tiers Partie I : les applications WEB 1 Evolutions logicielles Des objets aux composants... Objets JavaBeans, Objets ActiveX, Objets COM,... 1 Evolutions logicielles Des objets aux

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

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)

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) 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) Module 1 : Programmer une application informatique Durée

Plus en détail

Dispositif e-learning déployé sur les postes de travail

Dispositif e-learning déployé sur les postes de travail Résumé : Ce document fait l inventaire du matériel et des moyens nécessaires à la production de sessions de formation à distance à partir des postes de travail des salariés bénéficiant d une connexion

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

Programmation Internet en Java

Programmation Internet en Java Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.

Plus en détail

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application

Plus en détail