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