Les applets
Dans ce chapitre, vous apprendrez tout ce qu'il y a savoir sur les applets :
- ce qu'elles sont ;
- comment les créer ;
- comment les intégrer dans une page web ;
- faire interagir votre applet via du Javascript ;
- appeler du Javascript via votre applet ;
- ...
Par contre, afin de suivre ce chapitre dans les meilleures conditions, je vous conseille d'avoir des bases en Javascript.
Pour ce faire, vous pouvez utiliser
ce tuto.
Vous pouvez le lire jusqu'au chapitre 2 de la partie 2, au moins !
Je sens que vous êtes impatients de commencer, alors allons-y !
Un applet est une application Java insérée dans une page web.
Ce genre d'application est appelée
application client car elle est utilisée par celui qui appelle la page web (le client), et non par celui qui la génère (le serveur).
Il ne faut pas confondre un applet et une application
J2EE (maintenant
JEE). Pour bien comprendre à quel niveau se situe l'applet dans le cycle de vie d'une page web, un petit schéma s'impose. Ce schéma représente le cycle de vie d'une page web dite dynamique, c'est-à-dire que celle-ci contient du code interprété par le serveur (Java, PHP, ASP...) qui est ici une page contenant du code Java :

- (1) Le client émet une requête (saisie d'une URL, clic sur un lien...) pour demander une ressource au serveur. Exemple : http://www.monserveur.com/tuto.do. 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). Dans notre cas, il s'agit d'une application répondant à l'adresse "tuto.do" sur le serveur "monserveur.com".
- (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. Seulement, 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.
- (3) Ainsi, 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".
- (4) Le serveur d'applications (exemple : Tomcat ! Serveur d'applications Java) reçoit la requête à son tour. Il est, lui, en mesure de la traiter. Il exécute donc le morceau d'application (la servlet) auquel est destinée la requête, en fonction de l'URL. Cette opération est effectuée à partir de la configuration du serveur. La servlet est donc invoquée, et le serveur lui fournit notamment deux objets Java exploitables : un représentant la requête, l'autre représentant la réponse. La servlet peut maintenant travailler, et générer la réponse à la demande. Cela peut passer par la consultation de sources de données, comme des bases de données (4'' sur le schéma). Ou bien par l'interrogation d'autres serveurs ou systèmes (4' sur le schéma), l'environnement Java web permettant de se connecter à de nombreux systèmes.
- (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, et celle-ci a été générée, mais ce n'est plus le problème.
- (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...).
Ceci est un résumé du cycle de vie d'une page web faite avec la technologie J2EE. Je me doute que vous devez avoir des sueurs froides, mais ne vous inquiétez pas, nous reverrons tout ça plus en détail lorsque nous aborderons le développement web en Java...
Pour le moment, tout ce que vous avez besoin de savoir c'est qu'
un applet est une ressource utilisée par votre navigateur, tout comme une image : à la différence que là, il s'agit d'un programme qui va s'exécuter sur votre page !
Les ressources utilisées par votre navigateur pour charger et utiliser un applet sont chargées au chargement de la page, après que le serveur web ait renvoyé la réponse à votre requête.
Ces ressources sont dans le code source HTML de la page et le navigateur charge tout ce dont il a besoin pour afficher la page comme le développeur l'a souhaité (images, feuilles CSS, applet...).
Vous pouvez voir un aperçu de notre animation version applet
par ici.
Vous constaterez que le programme fonctionne parfaitement, comme s'il s'agissait d'une application fenêtrée, mais là, notre programme Java s'exécute sur une page web !
Attention : il se peut que votre navigateur n'autorise pas l'exécution des applets Java !
Pour remédier à ce problème, vous devez allez dans les options internet : menu Outils > Options dans l'onglet Contenu : cochez "autoriser le Java", sous Firefox.
Sous IE 7, faites : Outils > Options internet, dans l'onglet "content", cochez la case "utiliser JRE 1.X.XX pour les applets" où X.XX correspond à la version de votre JRE installé sur votre machine.
Maintenant, vous savez distinguer une application client d'une application serveur et donc, vous ne devrez plus faire l'amalgame entre applet et servlet !
Il est temps maintenant de faire votre première applet.
Vous allez voir que c'est très simple et que ça ressemble beaucoup à ce que vous avez fait jusque-là. En fait, c'est quasiment identique à une exception près :
un applet n'a pas de constructeur mais elle utilise la méthode init()
de la super-classe Applet du package awt ou JApplet du package swing.
Codage de l'applet
Nous allons faire un applet avec un code minimal, disons un label et un bouton. Lors du clic sur
bouton, nous afficherons le nombre de clics effectués. Rien de bien méchant. Créez un nouveau projet avec une classe
FirstApplet héritée de
JApplet.
Voici le code source de votre première applet :
Code : Java 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 | import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
public 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
* C'est cette méthode qui fait office de constructeur
*/
public void init(){
this.setSize(300, 80);
//On centre le texte du JLabel et on écrit en bleu...
label.setHorizontalAlignment(JLabel.CENTER);
//C'est plus zoli.
label.setForeground(Color.blue);
//Allez, une classe anonyme... Just for the fun ;)
this.bouton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
label.setText("Vous avez cliqué " + (++count) + " fois sur le bouton");
}
});
//On ajoute nos composants
this.getContentPane().add(bouton, BorderLayout.SOUTH);
this.getContentPane().add(label, BorderLayout.NORTH);
//Et le tour est joué !
}
}
|
Avant de vous lancer dans le test de cette première applet, vous devez savoir tout de même que, mis à part quelques méthodes comme
setTitle("Animation")
,
setLocationRelativeTo(null)
et quelques autres propres aux objets
JFrame, les applets s'utilisent de la même manière. Bien sûr, avec la méthode
public void init()
à la place d'un constructeur !
Maintenant, avant d'intégrer votre programme dans une page web, vous devez vous assurer que celui-ci fonctionne correctement.
Comment on fait ça ? Tu nous a dit que les applets étaient utilisées dans des pages web...
Je maintiens, mais Eclipse vous propose un moyen d'exécuter votre classe comme un applet.
Pour faire cela, faites un clic droit sur votre fichier puis choisissez "
Run as" et enfin choisissez "
Java Applet", comme ceci :
Vous pouvez voir, ébahis, le résultat de votre applet :
Vous avez un indicateur vous signalant si votre applet est lancé ou non. Si vous voyez le message : "Applet not inited", ça veut dire qu'une erreur s'est glissée dans votre code et que la JVM n'a pas pu initialiser l'applet !
Insertion dans une page HTML
Pour que votre navigateur sache que la ressource à utiliser est un applet Java, vous devez utiliser la balise HTML
<applet></applet>
.
Celle-ci peut prendre plusieurs attributs et vous pouvez même passer des paramètres à votre applet grâce à cette balise.
Voici la liste des paramètres que peut prendre la balise
<applet></applet>
:
- name="FirstAnimation"
: nom de l'applet, ici FirstAnimation
. Nous allons vite voir l'intérêt de cet attribut ;
- width="300px"
: largeur de l'applet affiché, ici, 300 pixels ;
- height="300px"
: hauteur de l'applet affiché ;
- codebase="class/"
: l'URL de base pour l'applet, c'est-à-dire l'endroit où le navigateur peut trouver les fichiers .class ; ici, les fichiers sont dans le dossier class à côté de votre fichier HTML ;
- code="FirstAnimation.class"
: fichier de classe de l'applet. Celui où se trouve la méthode init()
;
- archive="plugin.jar"
: identifie les ressources à pré-charger (.jar, images...) ; ici, nous pré-chargeons une archive Java appelée plugin.jar ;
- alt="Please Wait..."
: affiche un texte au cours du chargement ;
- hspace="10px"
: espacement horizontal entre l'applet et un autre contenu (div
ou autre bloc HTML...) ;
- vspace="20px"
: idem que précédemment mais pour l'espacement vertical.
Pfiou... Il y en a des attributs pour cette balise...
Voici donc un exemple de balise applet :
Code : HTML1
2
3
4 | <applet name="FirstAnimation" codebase="class/" code="FirstAnimation.class"
height="300px" width="300px" archive="plugin.jar">
<param name="message" value="Message pour les ZérOs">
</applet>
|
Heu...
On comprend bien tout mais, qu'est-ce que c'est que ce truc :
<param name="message" value="Message pour les ZérOs">
?
Je vous ai dit que vous pouviez passer des paramètres à votre applet. Eh bien c'est comme ceci que nous allons nous y prendre !

Ceci veut dire que nous pourrons utiliser la méthode
getParameter(String paramName);
qui va nous renvoyer un
String correspondant à l'attribut
value de la balise. Ici, on aurait
this.getParameter("message")//Retourne : Message pour les ZérOs.
Tenez, nous allons essayer ça ! Ajoutez ceci dans votre méthode
init()
:
System.out.println("Paramètre passé via la balise <param> : " + this.getParameter("message"));
.
Lancez votre applet et :
Ah oui ! Si vous ne spécifiez pas de paramètre pour votre applet, ledit paramètre vaut
null.
Voici comment on procède pour spécifier un paramètre pour votre application. Déjà, faites un clic droit sur votre fichier puis allez dans
Propriétés.
Ensuite, cliquez sur "
Run/Debug settings" puis sur le fichier correspondant à votre applet et enfin sur "
Edit", comme ceci :
Dans la fenêtre dans laquelle vous êtes maintenant, choisissez l'onglet "
parameter".
Vous arrivez enfin à l'endroit où vous pouvez ajouter des paramètres. Cliquez sur "
Add", comme ceci :
Et enfin, renseignez le nom de votre paramètre ainsi que sa valeur :
Cliquez sur "
Ok" sur toutes les fenêtres que vous avez ouvertes et relancez votre applet, le paramètre s'affiche enfin !
Vous pouvez maintenant incorporer votre applet dans une page HTML.
Voici le code de ladite page :
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12 | <html>
<body style="margin:auto;">
<div style="width:320px;margin:auto;margin-top:100px;border:5px solid black">
<applet codebase="class/" code="FirstApplet.class" height="80" width="300" hspace="10" vspace="10">
<param name="message" value="Message pour les ZérOs">
</applet>
</div>
</body>
</html>
|
J'ai créé ce code et enregistré le fichier contenant ce code HTML sur mon bureau, j'ai donc dû déplacer mes fichiers .class - oui, vous ne rêvez pas, j'ai dit :
mes fichiers .class - dans un dossier, que j'ai appelé "
class" pour l'occasion (cf. paramètre codebase de l'applet)...
J'ai récupéré mes fichiers .class dans le répertoire
/bin de votre projet, et vous pouvez voir que vous avez
FirstApplet.class et
FirstApplet$1.class dans le cas où vous avez exactement le même code que moi.
À quoi ça correspond ?
En fait,
FirstApplet.class correspond à la compilation de votre classe
FirstApplet et
FirstApplet$1.class correspond à la compilation de votre classe anonyme ! Pas de nom pour cette classe, donc la JVM remplace le nom par "
$1". Si vous aviez utilisé une classe interne, appelons-la
BoutonListener et si vous compiliez le code, vous auriez toujours
FirstApplet.class, mais vous auriez eu le fichier
FirstApplet$BoutonListener.class.
Donc, si vous avez créé votre page web ailleurs que dans votre dossier contenant votre projet, vous devrez déplacer tous les fichiers .class commençant par
FirstApplet et toutes les autres ressources que votre applet utilise (images, autres classes, archives Java...).
Maintenant que toute la lumière est faite sur ce point, vous pouvez aller voir votre première applet :
ici.
Il faut que vous sachiez que, si Eclipse est assez laxiste pour lancer l'applet même si le paramètre "message" n'est pas renseigné, votre navigateur, enfin la JVM de votre navigateur sera moins conciliante... Si le paramètre est manquant, l'applet plantera !
Voilà, vous venez de faire votre première applet ! Alors, heureux ?
Nota Bene
Avant de continuer, vous devez savoir une dernière chose, ceci ne concerne pas directement Java mais la balise
<applet></applet>
.
En fait, depuis la sortie de HTML 4.0, la balise
<applet></applet>
est dépréciée par le
W3C, c'est-à-dire que cet organisme préconise l'utilisation de la balise
<object></object>
.
Ceci en grande partie à cause de
IE qui gérait le Java avec sa propre JVM (version 1.1, c'est vieux...) et non celle de Sun Microsystems (bientôt 1.7...). Il faut, afin que la balise
<applet></applet>
fonctionne correctement sous IE, avoir installé un environnement Java et s'assurer que IE utilise celui-ci pour interpréter du Java... (cf. plus haut).
Je ne détaillerai pas l'utilisation de cette balise vu que Sun Microsystems recommande l'utilisation de la balise
<applet></applet>
... Voici tout de même un exemple d'utilisation de la balise
<object></object>
:
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | <!-- L'Utilisation des commentaires conditionnels propres à IE sont à utiliser -->
<!-- car même si IE requiert l'utilisation de cette balise, il ne l'interprète pas comme les autres -->
<!--[if IE]>
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="300" height="80" name="FirstApplet">
<param name="java_code" value="FirstApplet.class" />
<param name="java_codebase" value="class/" />
<param name="type" value="application/x-java-applet;version=1.5" />
<![endif]-->
<p>
<object classid="java:FirstApplet.class"
codebase="class"
type="application/x-java-applet"
width="300" height="80">
<param name="code" value="FirstApplet" />
<!-- Safari a besoin de ces paramètres -->
<param name="JAVA_CODEBASE" value="class" />
<param name="BGCOLOR" value="000000" />
<param name="TEXTCOLOR" value="FF0000" />
<param name="TEXT" value="Test :-)" />
<param name="SPEED" value="250" />
<param name="RANDOMCOLOR" value="1" />
alt : <a href="class/FirstApplet.class">FirstApplet.class</a>
</object>
</p>
|
Il est grand temps de voir comment notre page web peut interagir avec notre applet...

Go !
C'est à ce moment précis que vous aurez besoin des bases de Javascript.
Eh oui, la communication page web - applet se fait via un script Javascript !
En tout premier lieu, nous allons créer une méthode qui fait exactement la même chose que l'action lors du clic sur le bouton de notre applet, mais qui n'est jamais appelée dans notre applet...
C'est cette méthode que nous allons utiliser via Javascript :
Code : Java 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 | import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
public 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
* C'est cette méthode qui fait office de constructeur
*/
public void init(){
this.setSize(300, 80);
System.out.println("Paramètre passé via la balise <param> : " + this.getParameter("message"));
//On centre le texte du JLabel et on écrit en bleu...
label.setHorizontalAlignment(JLabel.CENTER);
//C'est plus zoli.
label.setForeground(Color.blue);
//Allez, une classe anonyme... Just for the fun ;)
this.bouton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
label.setText("Vous avez cliqué " + (++count) + " fois sur le bouton");
}
});
//On ajoute nos composants
this.getContentPane().add(bouton, BorderLayout.SOUTH);
this.getContentPane().add(label, BorderLayout.NORTH);
//Et le tour est joué !
}
/**
* Méthode utilisée par Javascript pour mettre à jour
* Celle-ci doit être public afin que Javascript puisse y avoir accès
* Le JLabel
*/
public void doJavascript(){
System.out.println("Méthode appelée par javascript ! ");
label.setText("Vous avez cliqué " + (++count) + " fois sur le bouton");
}
}
|
Rien de bien sorcier pour l'instant... Maintenant, nous allons voir comment appeler une méthode d'un applet Java dans un script Javascript. Pour ce faire, nous allons rajouter un simple bouton HTML sur notre applet précédent avec, lors du clic sur le bouton, l'appel à la fonction de l'applet.
Voici le code source HTML de cette page :
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | <html>
<body style="margin:auto;">
<div style="width:100%;text-align:center;background-color:#aef15b;"> </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['first'].doJavascript();"/>
</div>
<div style="width:100%;text-align:center;background-color:#aef15b;"> </div>
<div style="width:320px;margin:auto;margin-top:20px;border:5px solid black">
<applet codebase="class/" code="FirstApplet.class" height="80" width="300" hspace="10" vspace="10" name="first" id="firstApplet">
<param name="message" value="Message pour les ZérOs">
</applet>
</div>
</body>
</html>
|
Vous pouvez voir le résultat :
ici.
Voyons un peu comment cela fonctionne.
Votre navigateur charge l'applet.
Vous avez spécifié que lorsque nous cliquerons sur le bouton (événement onClick) nous exécuterons un morceau de code Javascript :
document.applets['first'].doJavascript();
.
À l'appel de cette instruction, le script se positionne sur l'applet portant le nom
first (notez que vous pouvez aussi utiliser un index, commençant par 0, pour utiliser des applets via Javascript : ici,
document.applets[0].doJavascript()
est équivalent) sur notre document et appelle la méthode
doJavascript()
déclarée dans cette applet. Celle-ci met à jour le
JLabel à l'intérieur de l'applet, et le tour est joué !
Nous allons aborder maintenant un point intéressant, la communication applet - page web !
Dans ce cas, la communication se fait dans l'autre sens, c'est-à-dire que c'est votre applet qui va mettre à jour votre page web !
Ceci se fait toujours grâce à du Javascript, sauf que maintenant, c'est notre applet qui va invoquer une méthode Javascript...
Pour réussir ce tour de force, nous allons avoir besoin d'un objet particulier, un
JSObject, non présent d'office dans les ressources disponibles Java. Nous allons donc devoir utiliser une bibliothèque externe, l'ajouter à notre projet, recompiler le programme et ajouter cette nouvelle ressource dans la déclaration de notre applet dans la page web.
Où peut-on trouver cet objet, alors ?
Il est dans votre JRE, et là, je veux dire dans le dossier
/lib de votre JRE.
L'objet en question se trouve dans l'archive plugin.jar qui se trouve, je le répète, dans le dossier
/lib de votre JRE (ou JDK).
Copiez cette archive dans le dossier contenant votre projet et mettez-le dans un dossier
/lib que vous créerez. Vous devez maintenant avoir trois dossiers dans votre projet :
- /src : contient les fichiers sources de votre applet ;
- /bin : contient les fichiers .class de votre applet ;
- /lib : contient l'archive plugin.jar.
Maintenant, nous allons dire à Eclipse qu'il peut utiliser la nouvelle ressource afin que nous puissions utiliser les classes qu'elle contient.
Pour ce faire, faites un clic droit sur votre projet, puis dans "
Build Path" choisissez "
Add External Archives" comme ceci :
Allez maintenant dans le dossier
/lib de votre projet et double cliquez sur
plugin.jar. Vous devez voir que, maintenant, la ressource externe fait partie de votre projet : vous pouvez utiliser les classes que contient l'archive
plugin.jar, et même voir son contenu :
L'objet tant convoité se trouve dans le package
netscape.javascript. Oui, vous ne rêvez pas et il s'agit bien du même netscape que vous connaissez : le navigateur web ! Ce sont eux qui ont développé ces classes...
Bon, nous sommes parés à utiliser l'objet
JSObject mais avant, nous allons mettre à jour notre page web afin que notre applet puisse écrire quelque part...
Nous allons donc retirer notre bouton HTML pour le remplacer par un
div
vide. C'est dans ce dernier que notre applet va écrire via du Javascript.
Il nous faut aussi une méthode Javascript pour écrire dans notre
div
: rien de difficile... Alors, qu'attendons-nous ?
Voici le code de notre page web :
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | <html>
<body style="margin:auto;">
<script type="text/javascript">
function affiche(str){
document.getElementById('label').innerHTML = str;
}
</script>
<div style="width:100%;text-align:center;background-color:#aef15b;"> </div>
<div style="width:100%;text-align:center;background-color:#aef15b;color:white;font-weight:bold;font-size:1.2em;" id="label"> </div>
<div style="width:100%;text-align:center;background-color:#aef15b;"> </div>
<div style="width:320px;margin:auto;margin-top:20px;border:5px solid black">
<applet mayscript="true" codebase="class3/" archive="lib/plugin.jar" code="FirstApplet.class" height="80" width="300" hspace="10" vspace="10" name="first">
<param name="message" value="Message pour les ZérOs">
</applet>
</div>
</body>
</html>
|
N'oubliez surtout pas l'attribut mayscript dans votre applet : sans celui-ci, votre applet ne sera pas habilitée à utiliser l'objet JSObject !
Et voici le code de votre applet :
Code : Java 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 | import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import netscape.javascript.JSException;
import netscape.javascript.JSObject;
public class FirstApplet extends JApplet {
private JLabel label = new JLabel();
private JButton bouton = new JButton("Cliquez");
private int count = 0;
private JSObject jso;
/**
* Méthode d'initialisation de l'applet
* C'est cette méthode qui fait office de constructeur
*/
public void init(){
setSize(300, 80);
//On initialise l'objet
try {
jso = JSObject.getWindow(this);
} catch (JSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Paramètre passé via la balise <param> : " + this.getParameter("message"));
//On centre le texte du JLabel et on écrit en bleu...
label.setHorizontalAlignment(JLabel.CENTER);
//C'est plus zoli.
label.setForeground(Color.blue);
//allez une classe anonyme... Just for the fun ;)
this.bouton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
String str = "Vous avez cliqué " + (++count) + " fois sur le bouton";
label.setText(str);
//On appelle la fonction Javascript
//ceci peut lever une exception
try {
//On appelle la méthode affiche en lui passant en paramètre
//un tableau
jso.call("affiche", new String[] {String.valueOf(str)});
}
catch (Exception ex) {
ex.printStackTrace();
}
}
});
//On ajoute nos composants
this.getContentPane().add(bouton, BorderLayout.SOUTH);
this.getContentPane().add(label, BorderLayout.NORTH);
//Et le tour est joué !
}
}
|
Et
le résultat est exactement celui escompté.
Dans ce code, il n'y a rien de compliqué...
L'objet s'utilise facilement, il suffit de ne pas oublier de gérer les exceptions et c'est bon.
Avant de terminer ce chapitre, vous devez savoir que les applets n'ont pas le droit de tout faire sur une page web !
En fait, au même titre que Javascript, les applets Java n'ont pas le droit d'accéder à la machine du client. Pour faire simple, ils sont confinés dans le navigateur web.
Et heureusement ! Vous imaginez un peu toutes les dérives si ce genre de script ou de programme pouvait naturellement avoir accès à votre PC ? Là, on pourrait devenir parano et il vaudrait mieux...
- Est-ce que ce script n'est pas en train d'effacer un fichier de configuration ?
- Il me semble que cette applet est en train d'accéder à un répertoire sensible...
- ...
Bref, vous imaginez...
Cependant, il se peut que quelquefois, pour quelques rares cas, votre applet doive accéder à des ressources de votre PC.
Exemple
Dans la boîte dans laquelle je suis actuellement, nous sommes en train de développer une application, format client léger (web), afin de gérer tous les processus industriels de la société, dont la pesée de certains articles avec scan des documents en même temps.
Nous avons donc fait un applet qui s'occupe de faire tout ça mais pour communiquer avec les ports COM et le scanner, nous avons dû
signer notre applet.
Eh... Quoi ?

Nous avons signé notre applet, c'est-à-dire que nous avons créé un certificat que nous avons attribué à notre applet et que l'utilisateur DOIT soit accepter, soit refuser au chargement de la page : ce certificat stipule que l'applet peut accéder à des ressources de sa machine, et lui demande s'il veut lui faire confiance .
Il n'est pas très pertinent de parler de la façon de signer une applet : au pire, si vous avez vraiment besoin de ça,
Google est votre ami...
Vous savez tout de même que les applets n'ont pas tous les droits sur une page web, au même titre que Javascript.
Vous avez vu pas mal de choses, mine de rien, dans ce chapitre.
On va faire un tour sur le topo habituel, suivi d'un petit QCM...
- Les applets peuvent dériver de java.awt.Applet ou de javax.swing.JApplet.
- Les applets n'ont pas de constructeur mais une méthode init().
- En gros, les applets se comportent comme des applications fenêtrées.
- Vous pouvez communiquer de votre page web vers votre applet grâce à l'instruction Javascript : document.applets.
- La communication inverse se fait via l'objet JSObject qui se trouve dans l'archive plugin.jar dans le dossier /lib de votre JRE (ou JDK).
- Par défaut, les applets n'ont pas accès aux ressources de la machine client.
- Pour accéder à la machine du client, vous devrez signer votre applet !
Maintenant, je pense que vous ne pourrez plus mélanger :
- Javascript et Java ;
- les applets et J2EE.
Sinon, vous êtes IMPARDONNABLES !
Après cette petite dérive, je pense que nous pouvons continuer notre tour d'horizon de l'API
swing !
En avant pour
les boîtes de dialogues !
Informations sur le tutoriel
Retour en haut
Créé : Le 21/06/2006 à 15:02:22
Modifié : Le 17/06/2009 à 11:19:46
Avancement : 100%
Licence : Copie non autorisée
10 commentaires