Newsgroup: it.comp.java
Titolo: Servlet

Ciao a tutti,
sto facendo i primi esperimenti con le Servlet.
Ho una classe ClienteController in cui ho implementato questo metodo:
public static Acquisto leggiAcquisto (String acquisto) {
		Acquisto a = new Acquisto(acquisto);
		a.leggiDatiDaDB();
		return a;
	}
il metodo leggiDatiDaDB() della classe Acquisti è il seguente:
public void leggiDatiDaDB() {AcquistoDAO.prelevaDatiDaDB(this);}
ed il metodo prelevaDatiDaDB(this) della AcquistoDAO
public static void prelevaDatiDaDB(Acquisto acq) {
       	try {
            conn = ConnectionManager.getConnection();
            if (conn != null) {
                st = conn.createStatement();
                rs = st.executeQuery("SELECT * " +
                                     "FROM B2C.ACQUISTO " +
                                     "WHERE NUMERO = '" +
acq.getNumero() +"'");
                if (rs.next()) {
                    acq.setNumero (rs.getString(1));
                    acq.setDataAcquisto (rs.getString(2));
                    acq.setPrezzoTotale (rs.getFloat(3));
                    acq.setCliente (rs.getString(4));
                    acq.setStato (rs.getString(5));
                    acq.setBlocco (rs.getString(6));
                    acq.setCitta (rs.getString(7));
                    acq.setPr (rs.getString(8));
                    acq.setIndirizzo (rs.getString(9));
                    acq.setPersistent (true);
                }
            }
        } catch(ClassNotFoundException ex){ex.printStackTrace();
        } catch(SQLException e){e.printStackTrace();}
}
nella Servlet ho scrito quanto segue:
response.setContentType("text/html;charset=UTF-8");
response.setBufferSize(8192);
PrintWriter out = response.getWriter();
String acquisto = request.getParameter("acquisto"); //da una jsp
Acquisto a = ClienteController.leggiAcquisto(acquisto);
scrivendo :
out.println("I dati dell'acquisto " + a);
stampa tutti null. Dov'è che sbaglio?
Ho fatto un file di test semplicissimo e funziona BENE!!!! :(
String viewAcq = JOptionPane.showInputDialog("Inserisci un acquisto da
visualizzare");
Acquisto a = ClienteController.leggiAcquisto (viewAcq);
System.out.println(a); //ho ridefinito oppurtunamente toString()

 stampa tutti null. Dov'è che sbaglio?
Probabilmente nella query. Controlla che il parametro che passi sia
corretto:
  String acquisto = request.getParameter("acquisto");
Inoltre sarebbe opportuno usare i Prepared Statements. Pensa se io,
manipolando il parametro del request, al valore di "acquisto" mettessi
qualcosa come "0' OR NUMERO IS NOT NULL OR NUMERO = '". La tua query
sarebbe:
  SELECT *
  FROM B2C.ACQUISTO
  WHERE NUMERO = '0' OR NUMERO IS NOT NULL OR NUMERO = {acq.getNumero()}
E cosi' ricevo una bella lista di tutti gli acquisti.
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

Hai ragione ma considera che è solo una prova per capire il funz delle
servlet: Sto in fase embrionale. Il mio dubbio nasce dal fatto che con
la classe di test in java tutto è ok. Quello che secondo me è il
problema è che nella servlet quando scrivo String acquisto =
request.getParameter("acquisto­"); //da una jsp
Acquisto a = ClienteController.leggiAcquist­o(acquisto);
non ottengo il riferimento all'oggetto Acquisto creato nella classe
ClienteController e popolato con il resultset che ho ottenuto nella
classe AcquistoDAO.
Come faccio per ottenere il riferimento all'oggetto creato e
correttamente popolato in quest'ultima classe? Grazie.

 classe AcquistoDAO.
Uh, e perche' no ? Il metodo "leggiAcquisto()" e' un metodo statico
della classe ClienteController, giusto ?
Io resto dell'idea che la Stringa "acquisto" o e' null o e' una stringa
vuota.
Non hai la posibilita' di fare un debug ?


nella servlet ho scritto out.println(acquisto) e stampa il numero di
acquisto che ho inserito nella jsp che poi richiama la servlet. Uso
NetBeans 4.1
Ora proverò a fare il debug. Se ti dovesse venire in mqnte qualche
altra cosa fammi sapere. E' per l'esame del Progetto di Basi si Dati
che mi sta facendo soffrire.

 che mi sta facendo soffrire.
Per cusiosità studi alla Sapienza vero? Siamo colleghi!
Ciao

indovinato!!! Hai già fatto questo esame?

 indovinato!!! Hai già fatto questo esame?
Si ho consegnato l'11 luglio. Il corso è stato veramente inutile... ti
do un consiglio: punta molto sulla fase di progetto e documenta molto
bene (schema ER, UML, Use-case, package) per il resto se il sistema non
gira alla perfezione il prof non fa problemi!
Ciao, in bocca al lupo!