Quelques questions sur les applets - Java - Programmation
Marsh Posté le 30-01-2004 à 17:21:37
Une applet ne peut ouvrir que des sockets clientes et seulement vers le serveur depuis lequel elle a été téléchargée.
Ton applet peut recharger la page (en fait, demander au browser de charger une URL).
Tu ne peux pas appeler de fonction javascript.
Tu intéragir avec l'applet depuis un script JS
C'est des questions de base que tu te poses ... Je te conseille de lire un titorial sur les applets plutot que de chercher des réponses sur des forums.
Marsh Posté le 30-01-2004 à 17:42:52
Cerel a écrit : |
Ca c'est une erreur de base. Une applet tourne dans le browser coté client et n'a pas accès aux ressources serveurs (excepté en utilisant une URL comme un client web classique)
Marsh Posté le 30-01-2004 à 17:53:02
En fait mon probleme est le suivant :
Les "clients" affichent des donnees succeptibles de changer a tout momment (via d'autres clients).
Donc il y a 2 solutions a ce "probleme" :
1) Rafraichir la page du client toutes les x secondes.
2) Trouver un moyen pour que la page du client puisse etre soit mise a jour sans la recharger complement, soit pour quelle recoive un signal lui indiquant de se rafraichir.
3) Faire toute la parite cliente en java.
J'ai elimine la solution 3 des le debut- Le but c'etait de faire qqch de "leger" via du php/mysql sur le serveur, et quasiment rien du cote du client.
1) C'est la methode actuellement utilisee, et j'aimerais la changer.
2) Je voulais utiliser un "mini serveur" java (applet) qui recoit le signal pour rafraichir la page. Donc apparament c'est pas possible.
Je vais donc me retrancher sur d'autres methodes moins "elegantes" qui me permetent de faire des "rafraichissements" plus legers de la page.
Si cela interesse qqn je pourais en parler, mais je vais pas commencer a raconter ma vie si cela n'interesse personne.
Merci pour vos reponses.
Marsh Posté le 30-01-2004 à 18:04:02
Pkoi tu fais pas une servlet applet qui fais du pooling sur une page spéciale sur ton serveur qui répond YES ou NO en fonction du fait qu'il faille que le client rafraichisse la page ?
Ca te fait un applet qui fait 20 lignes à tout casser et ca fait exactemen ce que tu veux ...
Marsh Posté le 30-01-2004 à 18:59:03
Hmmm, tu m'interesses, tu pourrais m'en dire plus sur cette "servlet" ?
Je vais voir ce que je trouve avec les quelques mots cles que tu m'a donne...
Marsh Posté le 30-01-2004 à 19:05:53
Cerel a écrit : Hmmm, tu m'interesses, tu pourrais m'en dire plus sur cette "servlet" ? |
oups non, pardon, il fallait lire applet à la place de servlet
(je corrige)
Marsh Posté le 30-01-2004 à 23:47:09
Alors non, car j'ai un meilleur moyen de faire ca, et sans java ...
Via une petite fonction javascript qui "mets a jours une image". Mais bon image invisible. Et apres si l'image a ete chargee "trouvee" alors je recharge la page, sinon je la recharge pas.
Mais bon, j'ai encore une technique "pas tres elegante" qui me permet de metre a jour la page sans la recharger ...
Marsh Posté le 31-01-2004 à 21:52:31
En fait j'y ai repense, et l'idee de l'applet qui s'occupe d'aller recuperer le resultat d'une page sur le serveur n'est pas si mal.
Parce qu'au debut, je voulais recuperer les donnees a metre a jour (que je peux faire via ma methode pas elegante) sans reload la page. Comme j'arrive pas, j'ai pense a la methode de la demande au serveur "Dois-je rafraichir la page".
Ce que je voudrais faire, c'est via l'applet recuperer soit, les donees a metre a jour, soit un JS qui s'en occupe.
D'apres ce que benou as dit, je ne peux pas appler des fonctions JS depuis l'applet, mais puis-je interagir directement avec les elements html ?
Promis, je vais arreter de vous ennuyer et faire des tests par moi meme.
Marsh Posté le 01-02-2004 à 00:00:43
Cerel a écrit : |
non
Marsh Posté le 01-02-2004 à 01:28:30
benou a écrit : |
bah si en js, justement
mais bon
Marsh Posté le 01-02-2004 à 03:16:51
Alors apres une petite discussion avec notre ami a tous, j'ai nomme Google.
Il existe au moins 2 techniques pour lancer des fonctions JS depuis le java.
La 1ere : utiiser le package "netscape.javascript.*". Ce package se trouve dans le repertoire de netscape si vous l'avez. Ou sinon, MS le distribue aussi -> Windows\Java\Packages, il est dans l'un des fichiers zip (chez moi WBTVVP75.ZIP).
Ce package vous permet d'utiliser JSObjet, ensuite pour appeler les functions javascript, il suffit d'appeler la methode call de JSObject.
La 2e methode ne necessite pas le ce package. Il suffit enfait de "changer l'adresse de la page" et l'url du type "javascript:myfunc()".
Je vais faire des tests plus aprofondis.
Pour en savoir plus sur ces deux methodes je vous renvoie a notre ami google. Je vais quand meme vous aider un peu
Google.com -> java-to-javascript
Marsh Posté le 01-02-2004 à 11:01:57
the real moins moins a écrit : bah si en js, justement |
je voulais dire pas depuis l'applet ...
mais notre ami a l'air de dire que c'est possible, alors je vais le laisser parler (j'ai jamais coder une applet, moi )
Marsh Posté le 01-02-2004 à 12:48:15
Voila 2 exemples utilisant chacun une technique differente :
Via la 1 methode
1ere methode
source de l'applet
Ceci provient de la http://www.simonstl.com/dynhtml/update/codesamp.html
Methode 2 :
Exemple
Pour voir la source suffit de cliquer sur le bouton ds la frame en bas.
Ceci provient de la http://www.ryerson.ca/Java/lectures/ (introduction -> 18)
Enfait d'apres les recherches, il semblerais que ce fut netscape qui introduisit la communication Java-Javascript (d'ou le nom du package) et ceci dès la version 4 de netscape. Ils lui on meme donne un nom LiveConnect.
D'apres les recherches il semblerais que ca marche assez bien, sauf avec IE 5 sur MAC, mais sinon ca a l'air de bien fonctionner. Pour autoriser la communication, faut ajouter "MAYSCRIPT" a la balise applet des pages html (je vous renvoi vers les sources des pages html citees plus haut).
J'ai meme teste sur Firebird 0.7, ca passe.
Si cela vous interesse je pourrais vous en dire plus au fur et a mesure des mes recherches et tests.
Marsh Posté le 01-02-2004 à 15:11:17
benou a écrit : |
ben puisque tu peux appeler du js depuis l'applet, ...
Marsh Posté le 01-02-2004 à 18:12:01
the real moins moins a écrit : ben puisque tu peux appeler du js depuis l'applet, ... |
je pensais que non, mais visiblement il a trouvé un package netscape.truc qui permet de le faire ... Je connaissais pas ce truc mais je savais que dans l'autre sens (JS->applet) ca pouvais se faire
Marsh Posté le 01-02-2004 à 18:15:33
Cerel a écrit : Voila 2 exemples utilisant chacun une technique differente : |
la 2e methode marche pas chez moi ...
et j'arrive pas à avoir les logs de l'applet
Marsh Posté le 01-02-2004 à 18:40:35
La 1ere methode utilise LiveConnect (package netscape.javascript.*) et alors que la 2e non.
La 2e se base sur l'url "javascript:"
qu'est-ce que tu entends par le "log", la source ?
Bizzare car pour voir la source, c'est une bete fonction javascript qui ouvre une nouvelle fenetre avec la source, peut-etre as-tu desactive/bloque javascript.
En tout cas voila la source du 2e applet
2e methode source
Attention, je ne suis pas l'auteur des ses applets, je les ai trouves en faisaint une recherche sur le net.
Marsh Posté le 01-02-2004 à 18:57:34
nan, je parlais des logs (les traces), je m'attendais à ce qu'il y a iat des logs d'erreurs vu que ca marchait pas mais visiblement non
Marsh Posté le 30-01-2004 à 16:54:53
Bonjour tout le monde.
Je me pose quelques questions sur les applets, alors comme je vous vois venir je me permet de vous repondre de suite.
Oui j'ai lu la faq, oui j'ai fait une recherche, mais je n'ai pas trouve quelque chose qui me satisfasse pleinement.
Bon, avant de commencer, sachez que je sais programmer en java, donc le langage en lui meme n'est pas mon probleme. Mon probleme vient du fait que je sais pas comment developper des applets.
J'ai appris java que via des programmes, pas d'applets. Donc voila je suis a la recherche d'une information de base concernant les applets.
Genre ma classe doit-elle heriter d'une classe de base (java.applet me semble) ?
Mon but est de creer un petit applet qui me permetras de mettre a jour les "clients" sans qu'ils aient a recharger la page toutes les x secondes.
Ce serait de creer un petit applet qui serait en fait un mini serveur. Des que ce dernier recoit un paquet il fait ca :
Soit reload la page web, soit interagit avec la page (via JS) afin de la mettre a jour.
Cet applet serait en fait utilise dans le cadre d'une application utilisee en entreprise. Ce n'est en aucun cas pour une utilisation "mal honnete".
Donc les questions que je pose :
-Que faut-il pour creer un applet ?
-J'avais vu qqpart, que les applets ne pouvaient pas utiliser les sockets. Or j'aimerais les utiliser. Il-y-a-t-il un moyen pour les utiliser ?
-Comment interagir avec la page, recuperation texte, ainsi qu'interaction avec des fonctions JS.
-Les fonctions JS peuvent-elles interagir avec l'applet ?
Voila, voila.
Bon si j'arrive pas a le faire via un applet, il me reste une derniere solution moins "elegante" pour arriver a mes fins, mais cela ne fait pas parti de ce forum...