PDA

Visualizza la versione completa : collegare applet a database


davide8282
07-10-2004, 10:30
salve a tutti :fighet:
Sto cercando di collegare una applet per visualizzare un grafico a un database in modo che la applet risulti dinamica e cambi ogni volta che si modifica il database..
l'unico problema è che non ho idea di come fare
qualcuno mi aiuti!! :cry:

Gondor
07-10-2004, 11:42
Spostato su Programmazione :D

Fox82
07-10-2004, 11:52
Ciao e benvenuto!

Il problema fondamentale è che le applet possono comunicare solo con il server da cui sono state scaricate. Le soluzioni per aggirare il problema sono 3:


Usare le applet certificate che non hanno queste limitazioni (fai una ricerca se ne è già parlato)
Lasciare un applicazione in ascolto sul server che faccia da tramite con il db, a cui l'applet si può connettere tramite socket
Se usi linguaggi server-side, puoi scrivere dinamicamente il codice html, quindi anche i parametri da passare all'applet (forse la via più semplice)


Spero di essere stato chiaro, in caso contrario chiedi pure qualche chiarimento

davide8282
07-10-2004, 12:09
Penso che il terzo punto sia quello più opportuno per me; infatti sto costruendo un sito e devo visualizzare un grafico tramite l'applet. Il grafico che devo visualizzare è relativo ai risultati di un sondaggio che vengono memorizzati sul database e vengono aggiornati ogni volta che si vota.
i dati per il grafico li devo prelevare dal database o dalla pagina che mi visualizza i risultati sul sito (è una servlet)?

Fox82
07-10-2004, 12:26
Ok, funziona così:

devi impostare l'applet per ricevere eventuali parametri.
Per ogni parametro che ti serve devi inserire un tag <parameter> tra i tag <applet></applet>

I tag parameter devi inserirli dinamicamente; cioè, nella servlet, interroghi il database e stampi i valori ottenuti nell'attributo value del tag parameter.

Ad esempio



out.Write("<parameter name=\"val1\" value=\"" + risQuery + "\" />


Così facendo, nel codice html generato avrai



<applet ...i vari parametri>
<parameter name="val1" value="100" />
<parameter name="val2" value="140" />
<parameter name="val3" value="90" />
ecc...
</applet>


:ciauz:

davide8282
07-10-2004, 13:48
scusami ma sono stupido..
l'Applet che devo modificare è questa:

<applet code="chart.class" width="600" height="300">
<param name="title" value="Statistiche di accesso sulla index di HTML POINT">
<param name="columns" value="4">
<param name="orientation" value="vertical">
<param name="scale" value="1">
<param name="Title_Font" value="Arial">
<param name="Column_Font" value="Arial">
<param name="format" value="none">
<param name="bgcolor" value="CCCCCC">
<param name="c2_color" value="007700">
<param name="c2_label" value="aprile 98">
<param name="c1_style" value="solid">
<param name="c4" value="1000">
<param name="c3" value="800">
<param name="c2" value="300">
<param name="c4_color" value="777700">
<param name="c1" value="100">
<param name="c4_label" value="dicembre 98">
<param name="c3_style" value="solidgrad">
<param name="c1_color" value="000077">
<param name="c1_label" value="gennaio98">
<param name="c3_color" value="000077">
<param name="c3_label" value="settembre 98">
<param name="c2_style" value="striped">
<param name="c4_style" value="stripedgrad">
</applet>

questa invece è la servlet che aggiorna le votazioni del sondaggio:


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

public class risultato extends HttpServlet
{
public void service
(HttpServletRequest req, HttpServletResponse res)
throws IOException{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
int tot=10;
String risp[]=new String[tot];
risp[0]="Vigor Prater";
risp[1]="Cerredolese";
risp[2]="Reggio Calcio";
risp[3]="Fabbrico";
risp[4]="Cadelboschese";
risp[5]="Tricolore Reggiana";
risp[6]="Reggiolo";
risp[7]="Gualtierese";
risp[8]="Cavola";
risp[9]="Montecchio";
String dbUrl="jdbc:odbc:database";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(dbUrl);
Statement s=con.createStatement();
ResultSet r;

out.println("<html>");
out.println("<head>");
out.println("<title>Risultati</title>");
out.println("</head>");
out.println("<body bgcolor='lightcyan' text='blue'>");
out.println("<font color='blue'>");
out.println("<h2>Risultati:</h2>");
out.println("</font>
");

for (int i=0; i<tot; i++){
r=s.executeQuery("SELECT Voti FROM Votazioni WHERE Risposta = "+i);
r.next();
out.println(""+risp[i]+" : "+r.getString("Voti")+" voto
");
}
out.println("

");
out.print("<FONT size='3' color=blue>Torna indietro ('../sondaggio.html')</FONT>");
s.close();
con.close();
} catch (Exception e) {
out.println("<html>");
out.println("<body bgcolor=lightcyan text=blue>");
out.println("<center>");
out.println("


");
out.println("<h1> E' successo un errore dopo la query sul data base</H1>");
out.println(e.toString());
out.println("</center>");
out.println("</body>");
out.println("</html>");
}
}
}


Riusciresti a dirmi come e dove modificare il codice?
grazie e scusa ancora
ciao

Fox82
07-10-2004, 13:52
Così non è semplice, hai qualche documentazione in più per l'applet?

PS: Quando devi inserire il codice usa il tasto [CODE]

davide8282
07-10-2004, 14:15
per quanto riguarda l'applet ho il file class che posso decompilare in .java
per il code ok d'ora in poi lo uso..
se dici che è complicato sarebbe più semplice prendere i dati dal database?

Fox82
07-10-2004, 14:35
La cosa che non ho ben capito è da dove l'applet prende i dati per generare il grafico. Dal codice che vedo sembra sia un istogramma, giusto?

In tal caso devi comunque stampare i tag applet (nel tuo codice non li vedo)

Ad esempio:



out.write("<applet code = \"chart.class\">");
...
out.write("<param name=\"c1\" value=\"Qui va il dato preso dalla query\">");
...


I parametri più importanti dell'applet sono cX_label (le intestazioni) e cX_value (i valori). Devi stampare i parametri in base ai risultati della query

davide8282
07-10-2004, 14:47
Esatto si tratta di un istogramma


ok probabilmente ho capito, però quando compilo la servlet mi da l'errore:
<identifier> expected
Sai dirmi di cosa si tratta?java è una cosa abbastanza sconosciuta..
grazie

Loading