Introduction aux applets
Transcription
Introduction aux applets
Introduction aux applets M. Belguidoum Université Mentouri de Constantine Département Informatique M. Belguidoum (UMC) Programmation réseau 1 / 30 Plan 1 Quelques rappels 2 Principe de fonctionnement des applets 3 Interaction page web-applet 4 Interaction applet-page web 5 Conclusion M. Belguidoum (UMC) Programmation réseau 2 / 30 Quelques rappels 1 Quelques rappels 2 Principe de fonctionnement des applets 3 Interaction page web-applet 4 Interaction applet-page web 5 Conclusion M. Belguidoum (UMC) Programmation réseau 3 / 30 Quelques rappels applet : quelques dénitions Applet : programme qui s'exécute dans la fenêtre d'un navigateur web. Applet : programme java inclus dans une page HTML Applet : technologie internet côté "client" Applet : une application Java insérée dans une page web M. Belguidoum (UMC) Programmation réseau 4 / 30 Quelques rappels Cycle de vie (1) Le client émet une requête (saisie d'une URL, clic sur un lien...) pour demander une ressource au serveur. Il ne sait pas ici si la réponse qui va lui parvenir est statique (page HTML simple) ou dynamique (générée par une application web). M. Belguidoum (UMC) Programmation réseau 5 / 30 Quelques rappels Cycle de vie (2)Côté serveur, c'est le serveur web (exemple : Apache) qui traite les requêtes HTTP entrantes. Il traite donc toutes les requêtes, qu'elles demandent une ressource statique ou dynamique. Un serveur HTTP ne sait répondre qu'aux requêtes visant des ressources statiques. Il ne peut que renvoyer des pages HTML, des images, des applets existantes. M. Belguidoum (UMC) Programmation réseau 5 / 30 Quelques rappels Cycle de vie (3) si le serveur HTTP s'aperçoit que la requête reçue est destinée au serveur d'applications, il la lui transmet. Les deux serveurs sont reliés par un canal, nommé "connecteur". M. Belguidoum (UMC) Programmation réseau 5 / 30 Quelques rappels Cycle de vie (4) Le serveur d'applications (exemple : Tomcat) reçoit la requête à son tour pour la traiter. Il exécute donc la servlet en fonction de l'URL à partir de la conguration du serveur. La servlet est donc invoquée, et le serveur lui fournit deux objets Java : la requête et la réponse. Une consultation de sources de données est possible (4) et l'interrogation d'autres serveurs ou systèmes est possible(4'). M. Belguidoum (UMC) Programmation réseau 5 / 30 Quelques rappels Cycle de vie (5) Une fois sa réponse générée, le serveur d'applications la renvoie, par le connecteur, au serveur web. Celui-ci la récupère comme s'il était lui-même allé chercher une ressource statique. Il a simplement délégué la récupération de la réponse. M. Belguidoum (UMC) Programmation réseau 5 / 30 Quelques rappels Cycle de vie (6) La réponse est dorénavant du simple code HTML, compréhensible par un navigateur. Le serveur HTTP peut donc retourner la réponse au client. Celle-ci contient toutes les ressources nécessaires (feuilles Javascript, feuilles CSS, applet Java, images...). M. Belguidoum (UMC) Programmation réseau 5 / 30 Quelques rappels Quelques rappels : Page statiques/Pages dynamiques Fichier HTML "pur" : page statique au contenu toujours identique Si on veut des pages au contenu dynamique qui dépendent, par exemple, de résultats de programmes lancés sur le serveur comme l'interrogation d'une base de données, il existe d'autres techniques : Embarquer du code dans le chier HTML (balises encadrée de % ) Pages ASP (Active Server Page) : technologie microsoft Pages JSP (Java Server Page) : technologie sun Requête à une servlet (programme java côté serveur) Requête à un script sur le serveur : programme php, perl, ... M. Belguidoum (UMC) Programmation réseau 6 / 30 Principe de fonctionnement des applets 1 Quelques rappels 2 Principe de fonctionnement des applets 3 Interaction page web-applet 4 Interaction applet-page web 5 Conclusion M. Belguidoum (UMC) Programmation réseau 7 / 30 Principe de fonctionnement des applets Principe de fonctionnement des applets Il existe une balise HTML permettant d'intégrer une applet dans une page HTML < APPLET CODE = PremierApplet . class WIDTH =200 HEIGHT =100 > </ APPLET > PremierApplet.class est une ressource (programme java déjà compilé) qui se trouve sur le serveur PremierApplet.class correspond à la compilation d'un chier dénissant une sous-classe de la classe M. Belguidoum (UMC) javax.swing.JAppletApplet Programmation réseau 8 / 30 Principe de fonctionnement des applets Technologie internet côté "client" code java (.class) stocké sur un serveur web (comme des images ou des chiers HTML) télécharger de ce serveur sur le poste client quand le client (un navigateur) demande la page HTML contenant la balise référant au code inscrit dans l'attribut CODE APPLET exécuter ensuite sur le client de façon autonome par la machine virtuelle java incluse dans le navigateur M. Belguidoum (UMC) Programmation réseau 9 / 30 Principe de fonctionnement des applets Principe de fonctionnement des applets le navigateur, quand il rencontre la balise APPLET vérie qu'il n'a pas ce code déjà dans le répertoire cache de sa machine si ce n'est pas le cas, il envoie une nouvelle requête au serveur lui demandant le code indiqué de cette applet En réponse, le serveur retourne au client le programme java inscrit dans le paramètre code le code de l'applet est donc téléchargé du serveur dans le répertoire cache de l'ordinateur client puis exécuté par le chargeur d'applet sur la machine client M. Belguidoum (UMC) Programmation réseau 10 / 30 Principe de fonctionnement des applets Principe de fonctionnement des applets Par défaut, le code de l'applet est cherché dans le répertoire contenant le chier HTML S'il est ailleurs, on donne le répertoire dans lequel il est situé grâce à l'attribut CODEBASE < APPLET CODE = PremierApplet . class CODEBASE = Exemples / WIDTH =200 HEIGHT =100 > </ APPLET > Si c'est une adresse relative : recherche à partir du répertoire contenant le chier HTML Si c'est une adresse absolue, on peut télécharger l'applet de n'importe où, voire même d'un autre serveur web que celui qui contient la page HTML (CODEBASE=http://someServer/...) M. Belguidoum (UMC) Programmation réseau 11 / 30 Principe de fonctionnement des applets Programmation d'une applet Une applet ne peut donc être exécutée que si elle est intégrée dans une page HTML et elle s'exécute sous le contrôle d'un navigateur Une applet java fait toujours intervenir au moins deux chiers un chier java compilé : prog.class un chier HTML (prog.html) qui contient la balise APPLET avec la référence au code prog.class Pour la mise au point d'une applet, on peut utiliser l'outil appletviewer M. Belguidoum (UMC) Programmation réseau 12 / 30 Principe de fonctionnement des applets Les méthodes des applets Méthodes void init() Appelée quand ? Initialisation : quand l'applet est char- gée. Ne se produit qu'une fois dans la vie de l'applet void start() Démarrage Arrêt Destruction Achage : lors du lancement ou de la reprise de l'applet void stop() : quand on quitte la page conte- nant l'applet void destroy() : quand on quitte le navi- gateur. void paint(Graphics g) M. Belguidoum (UMC) Programmation réseau 13 / 30 Principe de fonctionnement des applets Exemple1 : code java import import import import import import import public java . awt . BorderLayout ; java . awt . Color ; java . awt . event . ActionEvent ; java . awt . event . ActionListener ; javax . swing . JApplet ; javax . swing . JButton ; javax . swing . JLabel ; class FirstApplet extends JApplet { private JLabel label = new JLabel (); private JButton bouton = new JButton (" Cliquez " ); private int count = 0; /* ** Méthode d ' initialisation de l ' applet */ public void init (){ this . setSize (300 , 80); // On centre le texte du JLabel et on écrit en bleu ... label . setHorizontalAlignment ( JLabel . CENTER ); this . bouton . addActionListener ( new ActionListener (){ public void actionPerformed ( ActionEvent arg0 ) label . setText (" Vous avez cliqué " + (++ count ) + " fois sur le bouton " ); } }); M. Belguidoum (UMC) Programmation réseau 14 / 30 Principe de fonctionnement des applets Exemple1 // On ajoute nos composants this . getContentPane (). add ( bouton , BorderLayout . SOUTH ); this . getContentPane (). add ( label , BorderLayout . NORTH ); } } Après exécution de l'applet (Run As : Java Applet) M. Belguidoum (UMC) Programmation réseau 15 / 30 Principe de fonctionnement des applets Exemple1 : insertion dans une page HTML < applet name =" FirstApplet " codebase =" class / " code =" FirstApplets " height =" 300 px " width =" 300 px " archive =" plugin . jar " > < param name =" message " value =" Message pour les Licence GL " > </ applet > Les paramètres de la balise <applet></applet> : name="FirstApplet" : nom de l'applet width="300px" : largeur de l'applet en pixels ; height="300px" : hauteur de l'applet en pixels ; codebase="class/" : l'URL de base pour l'applet, c'est-à-dire l'endroit où le navigateur peut trouver les chiers .class code="FirstApplet.class" : chier de classe de l'applet. Celui se trouve la méthode init() ; M. Belguidoum (UMC) Programmation réseau où 16 / 30 Principe de fonctionnement des applets Exemple1 : insertion dans une page HTML archive="plugin.jar" : identie les ressources à pré-charger (.jar, images...) ; alt="Please Wait..." : ache un texte au cours du chargement ; hspace="10px" : espacement horizontal entre l'applet et un autre contenu (div ou autre bloc HTML...) ; vspace="20px" : espacement vertical. Pour passer des paramètres à l'applet on utilise paramName) qui renvoie balise <param...>. getParameter(String value de la un String correspondant à l'attribut this . getParameter (" message " )// Retourne : Message pour les Licence GL . M. Belguidoum (UMC) Programmation réseau 17 / 30 Interaction page web-applet 1 Quelques rappels 2 Principe de fonctionnement des applets 3 Interaction page web-applet 4 Interaction applet-page web 5 Conclusion M. Belguidoum (UMC) Programmation réseau 18 / 30 Interaction page web-applet Interaction page web-applet Appeler une méthode d'un applet Java dans un script Javascript : rajouter un simple bouton HTML sur l'applet et lors du clic sur le bouton, l'appel à la fonction doJavascript() de l'applet. .... public class SecondApplet extends JApplet { ..... /* * * Méthode utilisée par Javascript pour mettre à jour * elle est public afin que Javascript puisse y avoir accès */ public void doJavascript (){ System . out . println ( " Méthode appelée par javascript ! " ); label . setText (" Vous avez cliqué " + (++ count ) +" fois sur le bouton " ); } } M. Belguidoum (UMC) Programmation réseau 19 / 30 Interaction page web-applet Interaction page web-applet la communication page web-applet se fait via un script Javascript < html > < body style = " margin : auto ;" > < div ...... </ div > < div style =" width :100%; text - align : center ; background - color :# aef15b ;" > < input type = " button " value = " Lancer la méthode de l ' applet " onClick = " document . applets [' second ']. doJavascript (); "/ > </ div > < div ....... </ div > < applet codebase = " class /" code =" SecondApplet . class " height =" 80 " width = " 300 " hspace =" 10 " vspace =" 10 " name =" second " id =" secondApplet " > < param name =" message " value =" Message Licence Gl " > </ applet > </ div > </ body > </ html > M. Belguidoum (UMC) Programmation réseau 20 / 30 Interaction page web-applet Interaction page web-applet en cliquant sur le bouton (événement onClick) le code Javascript sera exécuté : document.applets['second'].doJavascript(); le script se positionne sur l'applet portant le nom rst et appelle la doJavascript() doJavascript() met à jour méthode M. Belguidoum (UMC) le JLabel Programmation réseau à l'intérieur de l'applet 21 / 30 Interaction applet-page web 1 Quelques rappels 2 Principe de fonctionnement des applets 3 Interaction page web-applet 4 Interaction applet-page web 5 Conclusion M. Belguidoum (UMC) Programmation réseau 22 / 30 Interaction applet-page web Interaction applet-page web l'applet met à jour la page web en invoquant une méthode Javascript JSObject se trouvant /lib de JRE (ou JDK). Utiliser l'objet le dossier dans l'archive plugin.jar dans Utiliser cette archive comme une bibliothèque externe l'ajouter au projet, recompiler le programme et ajouter cette nouvelle ressource dans la déclaration de l'applet dans la page web. M. Belguidoum (UMC) Programmation réseau 23 / 30 Interaction applet-page web Interaction applet-page web < body style = " margin : auto ;" > < script type =" text / javascript " > function affiche ( str ){ document . getElementById (' label '). innerHTML = str ; } </ script > ...... < div ...... > < applet mayscript =" true " codebase =" class /" archive =" lib / plugin . jar " code =" ThirdApplet . class " height =" 80 " width =" 300 " hspace =" 10 " vspace =" 10 " name =" third " > < param name = " message " value =" Message pour les Licence GL " > </ applet > </ div > / body > M. Belguidoum (UMC) Programmation réseau 24 / 30 Interaction applet-page web Interaction applet-page web import java . awt . BorderLayout ; .... public class ThirdApplet extends JApplet { ...... private JSObject jso ; public void init (){ setSize (300 , 80); try { // On initialise l ' objet jso = JSObject . getWindow ( this ); } catch ( JSException e ) { // TODO Auto - generated catch block e. printStackTrace ();} ...... this . bouton . addActionListener ( new ActionListener (){ public void actionPerformed ( ActionEvent arg0 ) { String str = " Vous avez cliqué " + (++ count ) + " fois sur le bouton "; label . setText ( str ); try { // On appelle la fonction Javascript jso . call (" affiche " , new String [] { String . valueOf ( str )}); } catch ( Exception ex ) { ex . printStackTrace ();}}}); ... }} M. Belguidoum (UMC) Programmation réseau 25 / 30 Interaction applet-page web Interaction applet-page web M. Belguidoum (UMC) Programmation réseau 26 / 30 Conclusion 1 Quelques rappels 2 Principe de fonctionnement des applets 3 Interaction page web-applet 4 Interaction applet-page web 5 Conclusion M. Belguidoum (UMC) Programmation réseau 27 / 30 Conclusion Applets et sécurité Javascript et les applets Java n'ont pas le droit d'accéder à la machine du client Les applets n'ont pas tous les droits sur une page web, au même titre que Javascript. Il ya possibilité de signer les applets en lui attribuant un certicat L'utilisateur doit soit accepter le certicat, soit le refuser au chargement de la page Ce certicat stipule que l'applet peut accéder à des ressources de sa machine, et lui demande s'il veut lui faire conance . M. Belguidoum (UMC) Programmation réseau 28 / 30 Conclusion Conclusion Les applets peuvent dériver de javax.swing.JApplet. java.awt.Applet ou de Les applets n'ont pas de constructeur mais une méthode init(). les applets se comportent comme des applications fenêtrées. La communication à partir de la page web vers l'applet se fait par document.applets. La communication inverse se fait via l'objet JSObject qui se trouve dans l'archive plugin.jar dans le dossier /lib de JRE (ou JDK). l'instruction Javascript : Par défaut, les applets n'ont pas accès aux ressources de la machine client. Pour accéder à la machine du client, l'applet doit être signée M. Belguidoum (UMC) Programmation réseau 29 / 30 Conclusion Références The java tutorials : Applets http: //download.oracle.com/javase/tutorial/deployment/applet/ Tutorial des applets : le site du zéro http: //www.siteduzero.com/tutoriel-3-10564-les-applets.html support cours de F. Gayral JDK 1.4 Demo Applets : http://java.sun.com/applets/jdk/1.4/index.html répertoire demo du jdk installé sur votre machine ou dans le ... M. Belguidoum (UMC) Programmation réseau 30 / 30