Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment afficher le résultats de requete de bd dans une appplet ?

5 réponses
Avatar
AP
Bonjour,
je démarre tout juste en java et j'ai réussi à
me connecter via jdbc sur une base de donnée
et a afficher le résultats de requêtes en mode
autonome (sortie standard avec System.out.printl).

Mais des que je souhaite créer une applet graphique
pour formater l'affichage, aligner les champs etc....):

j'utilise dans mon applet la méthode
public void paint(Graphics g)
{
ma méthode de connexion + requête
g.drawString("affichage des données", 5, 25);
}
j'ai des erreurs liées aux problèmes de sécurité
des applets.

Et si je met la méthode public void paint(Graphics g)
en deuxieme methode dans mon programme, je n'ai
pas accès aux variables contenant les données pour
les afficher....

Comment faire pour réaliser une affichage propre
de données extraites d'une base en java ?
Je pensais qu'une applet intégrée à une page html
serait une bonne solution pour mon projet et la
facilité du lancement du code java.

Merci de vos conseils.

Si vous avez des exemples de code, n'hésitez pas.
Alan

5 réponses

Avatar
captainpaf
Le Thu, 23 Oct 2003 23:40:47 +0200, "AP" a

Bonjour,
je démarre tout juste en java et j'ai réussi à
me connecter via jdbc sur une base de donnée
et a afficher le résultats de requêtes en mode
autonome (sortie standard avec System.out.printl).

Mais des que je souhaite créer une applet graphique
pour formater l'affichage, aligner les champs etc....):

j'utilise dans mon applet la méthode
public void paint(Graphics g)
{
ma méthode de connexion + requête
g.drawString("affichage des données", 5, 25);
}
j'ai des erreurs liées aux problèmes de sécurité
des applets.

Et si je met la méthode public void paint(Graphics g)
en deuxieme methode dans mon programme, je n'ai
pas accès aux variables contenant les données pour
les afficher....

Comment faire pour réaliser une affichage propre
de données extraites d'une base en java ?
Je pensais qu'une applet intégrée à une page html
serait une bonne solution pour mon projet et la
facilité du lancement du code java.

Merci de vos conseils.

Si vous avez des exemples de code, n'hésitez pas.
Alan



Salut,

je te conseil de créer les acces à ta base de donné dans une class
séparée et autonome. Cette class s'occupera de l'acces, de la
sauvegarde et de l'envois des donnés.

ensuite, si ta bdd tourne sur un server séparé, tu peux utiliser ta
class avec les jsp. Donc en sortie une page html qui pourra s'afficher
sur tous les client possédant un navigateur html.

si la base de donnée tourne sur le poste client, tu peux créer une
application avec swing.

pour les exemple de code, c'est plutôt à toi de nous montrer ou tu en
ai si tu veux que l'on t'aide plus.

Avatar
AP
Salut,

je te conseil de créer les acces à ta base de donné dans une class
séparée et autonome. Cette class s'occupera de l'acces, de la
sauvegarde et de l'envois des donnés.

ensuite, si ta bdd tourne sur un server séparé, tu peux utiliser ta
class avec les jsp. Donc en sortie une page html qui pourra s'afficher
sur tous les client possédant un navigateur html.

si la base de donnée tourne sur le poste client, tu peux créer une
application avec swing.

pour les exemple de code, c'est plutôt à toi de nous montrer ou tu en
ai si tu veux que l'on t'aide plus.


Bonjour et merci de la réponse,

en fait, je choisis d'afficher dans une applet pour pouvoir raffraichir
les données affichées ( timer dans le code java ?), indépendament
des possibilités de recharge des pages html ou jsp ou tout est raffraichi
même s'il n'y a pas eu de changement (ajout / suppression) de lignes de
données. La base n'est pas sur le client (Mysql sur Linux).

Je ne sais pas si je suis clair, mais je souhaiterais en fait faire une
espece
de chat ou toutes les infos sont en fait l'image en npseudo temps réel d'une
table de base de données et non pas les messages envoyés des utilisateur
connectés.
- J'ai regardé dans les exemples du JDK 1.4.2 et dans les jfc, il y'a
l'exemple
avec SwingSet2.jar ou on peut utiliser une fenêtre avec scrolling qui
m'irait assez
bien (JprogressBar demo) et qui tient dans une page html. Mais qu'est ce que
ce
plug'ins qu'il faut éventuellement installé (j'ai Netcape 7 et il me semble
que celui-ci
est mis des l'installation, de même que lors de 'install du JRE qui demande
si
l'on desire pluggé les navigateurs présent sur le PC.
- Ou encore dans le repertoire Jfc/Stylepad ou il y'a possibilité d'avoir
une fenêtre
avec scrolling et bouton.... mais cela là fonctionne t-il en tant qu'applet
?
Ou faut-il le lancer avec WebStart ? (je l'ai lancé dans femetre dos avec
java -jar).

Je suis un peu dans le brouillard, car les choses changent tres vite en
innformatique
en ce moment...
En ce qui concerne le code, rien de bien interressant, car ce sont des
examples
trouvés dans la doc que j'utilise et je ne sais pas vers quelle philosophie
m'orienter
pour une appli IHM, qui devrait être sur un serveur linux sous apache et à
la limite
le module de tomcat.
Mais l'utilisation d'applet devrait en principe s'affranchir de JSP et
autres servlet
car il me semble que cette techno ne permet pas de raffraichir
dynamiquement les applets contenues dans les pages, si ce n'est pas les tags
html
classiques qui raffraichissent ou toute la page / frame.
Merci de vos conseils.

Alan

Avatar
captainpaf
Le Fri, 24 Oct 2003 12:49:02 +0200, "AP" a

Salut,

ce que tu veux faire ne pose pas de réel problème. Tu peux utiliser
une applet avec un timer pour le raffraichissement comme tu l'as
imaginé.
Ensuite, cette applet communiquera avec une servlet pour la
récupération des infos en BDD.
Par contre, au niveau de l'applet, je te conseil quand même de passer
par une page jsp (au lieu d'une page html) qui est je pense la
meilleur façon de faire tourner ton code sur le plus de navigateurs
possibles

<code applet.jsp>

<%@ page language="java" contentType="text/html" %>
<html>
<head>
</head>
<body bgcolor="white">
<jsp:plugin type="applet" code="TonApplet.class"
codebase="applet"
jreversion="1.2" width="200" height="200" >
<jsp:params>
<jsp:param name="paramApplet" value="tavaleur" />
</jsp:params>
<jsp:fallback>
Les balises OBJECT ou EMBED ne sont pas supportées par le
navigateur.
</jsp:fallback>
</jsp:plugin>
</body>
</html>

</code applet.jsp>.

<code applet.java>
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.text.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class TonApplet extends JApplet implements Runnable
{
private String SERVER_IP = "http://localhost/taWebApp/&quot;;
Thread timer;


/**
* Initialisation de l'applet
*/
public void init()
{
panel.setForeground(Color.BLACK);
JLabel label = new JLabel("test");
getContentPane().add(LABEL);
}


/**
* lancement de l'applet
*/
public void start()
{
timer = new Thread(this);
timer.start();
}


/**
* arret de l'applet
*/
public void stop()
{
timer = null;
}


/**
* méthode du thread utilisée pour le raffraichissemnt
*/
public void run()
{
Thread me = Thread.currentThread();
while (timer == me)
{
try
{

//======================================= /*
* Envoi de données par POST
*/
URL url = new URL(SERVER_IP +
"TaServlet");
String data = "test";
URLConnection conn url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStreamWriter osw = new
OutputStreamWriter(conn.getOutputStream());
osw.write(data);
osw.flush();
osw.close();
/*
* Récupération de la réponse de la
servlet
*/
BufferedReader br = new
BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
String text = "";
while ((line = br.readLine()) != null)
{
/*
* traitement des lignes
*/
text += line;
}

br.close();
Thread.currentThread().sleep(5000);
}
catch (Exception e)
{
}
}
}


/**
* Description of the Method
*/
public void sendMessage()
{
try
{
//======================================= /*
* Envoi de données par POST
*/
URL url = new URL(SERVER_IP +
"ActionAppletSendMsg");
String data = nickname + " " +
tfMessage.getText();
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStreamWriter osw = new
OutputStreamWriter(conn.getOutputStream());
osw.write(data);
osw.flush();
osw.close();
/*
* Récupération de la réponse de la servlet
*/
BufferedReader br = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
String line;
String text = "";
while ((line = br.readLine()) != null)
{
/*
* traitement des lignes
*/
text += line;
}
tfMessage.setText("");
tfMessage.requestFocus();
br.close();
label.setText(text);
}
catch (Exception e)
{
}

}
}
</code applet.java>

et pour finir ta servlet
<code TaServlet.java>
package tonpackage;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ChatServlet extends HttpServlet
{

public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
BufferedReader br = new BufferedReader(new
InputStreamReader(request.getInputStream()));
// le message de l'applet
String message = br.readLine();

PrintWriter out response.getWriter();
out.println("reponse de la servlet");

}
}

public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
/*
* Réponse de la servlet
*/
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>ca marche</body></html>");
}

}

</code TaServlet.java>

voilà, tu as la structure de base pour la communication
appplet/servlet. Tu n'as plus qu'à coder dans la servlet l'accès à ta
base de donnée.

J'espère que ce bout de code t'aidera un peu à sortir du brouillard.
Avatar
Samir
Tu ne peux pas acceder a la base par le biais de l'applet, moi aussi j'ai
fais cette erreur, pour une application web, tu devra passer par J2EE.
Désolé

"AP" a écrit dans le message de news:
3f984aad$0$27597$
Bonjour,
je démarre tout juste en java et j'ai réussi à
me connecter via jdbc sur une base de donnée
et a afficher le résultats de requêtes en mode
autonome (sortie standard avec System.out.printl).

Mais des que je souhaite créer une applet graphique
pour formater l'affichage, aligner les champs etc....):

j'utilise dans mon applet la méthode
public void paint(Graphics g)
{
ma méthode de connexion + requête
g.drawString("affichage des données", 5, 25);
}
j'ai des erreurs liées aux problèmes de sécurité
des applets.

Et si je met la méthode public void paint(Graphics g)
en deuxieme methode dans mon programme, je n'ai
pas accès aux variables contenant les données pour
les afficher....

Comment faire pour réaliser une affichage propre
de données extraites d'une base en java ?
Je pensais qu'une applet intégrée à une page html
serait une bonne solution pour mon projet et la
facilité du lancement du code java.

Merci de vos conseils.

Si vous avez des exemples de code, n'hésitez pas.
Alan




Avatar
AP
/* ******************************/
voilà, tu as la structure de base pour la communication
appplet/servlet. Tu n'as plus qu'à coder dans la servlet l'accès à ta
base de donnée.

J'espère que ce bout de code t'aidera un peu à sortir du brouillard.


Bonjour,
merci pour ce squelette de prog, je vais tenter d'installer sur mon tomcat
qui tourne en ce moment sur mon serveur en autonome (j'ai pas réussi
à trouver le bon module web_app.so pour le greffer directement sur apache).

Une dernière question de fond toutefois:
-Est-il plus difficile de faire tourner une applet via un serveur de
jsp/servlet
ou créer une appli autonome de type de celle qui se lance avec webapp...
car il semble la pérennité de la techno se trouve plus de ce côté que du
côté des applets.

Encore merci pour ce coup de main et peut-être la suite de mes aventures
dans quelques jours sur un autre point qui m'apparaitra obscur....
(le compilateur java regorge de messages d'erreur tous + incompréhensibles
les uns que les autres....).

Alan