Tutorial JSP database-seconda parte Silvano Natalizi Apr 11, 2010
Obiettivo della lezione <ul><li>L’obiettivo di questa lezione è quello di insegnare  come si programma una “java server pa...
CRUD <ul><li>CRUD </li></ul><ul><ul><li>Create </li></ul></ul><ul><ul><li>Read </li></ul></ul><ul><ul><li>Update </li></ul...
Risolviamo il problema per approssimazioni successive <ul><li>Nella prima fase del lavoro pensiamo solo a far girare tutto...
Usiamo la pala e il piccone  <ul><li>Si. Immergiamo le nostre mani nel codice. Sporchiamoci . </li></ul><ul><li>Picconiamo...
Semplice teoria. <ul><li>Per eseguire un comando SQL usiamo due distinte istruzioni java. </li></ul><ul><li>1) per leggere...
Esempio  <ul><li>ResultSet rs=s.executeQuery(&quot; select * from titolo where id ='&quot;+codice+&quot;' &quot;); </li></...
Facciamo una prima pagina menu.html con la scelta dei comandi
Le pagine html <ul><li>Per ogni opzione del menù, creiamo una nuova pagina con la relativa form </li></ul><ul><ul><li>Sceg...
Pagina html con la form di inserimento di un nuovo titolo
Programma per inserire nella tabella i dati della form
Esame del programma InserisciTitolo.jsp - 1 <ul><li>9) carica in memoria il DriverManager </li></ul><ul><li>10-11) crea l’...
Esame del programma InserisciTitolo.jsp - 2 <ul><li>Il programma deve gestire la chiave primaria id. L’utente non sa della...
Esame del programma InserisciTitolo.jsp - 3 <ul><li>15-17) definizione delle variabili nelle quali salvare i valori dei da...
Esame del programma InserisciTitolo.jsp - 4 <ul><li>Pagina html restituita al browser  </li></ul><ul><li>30) assegnazione ...
Osservazione importante <ul><li>Tutto funziona, purchè non vengano inseriti nei dati digitati nella form degli apostrofi. ...
Visualizzazione dell’elenco dei titoli
Spiegazione del precedente programma <ul><li>Quali sono gli elementi caratteristici del precedente codice ? </li></ul><ul>...
Aggiornamento di una riga esistente <ul><li>Per aggiornare un record esistente in una tabella, occorre anzitutto ricercarl...
Ricerca record da modificare <ul><li>La ricerca si può fare con diversi criteri: per chiave primaria, per titolo, per paro...
Programma per la ricerca, con la chiave primaria
Se il record è trovato… <ul><li>La chiave primaria non viene visualizzata, perché l’utente non deve averne l’accesso ed il...
Esame delle istruzioni di CercaTitolo.jsp <ul><li>Per ogni valore di chiave primaria c’è uno ed un solo record. </li></ul>...
Modifica dei dati
Risultato della modifica dei dati
Eliminazione di una riga della tabella <ul><li>Anche in questo caso, prima di eliminare, dobbiamo ritrovare la riga da can...
Poca intelligenza ? <ul><li>Nello spirito della vanga e del piccone, procediamo su questa strada che richiede un grosso sf...
Piano d’azione <ul><li>Duplichiamo CercaTitolo.jsp   CercaTitolo1.jsp </li></ul><ul><li>In CercaTitolo1.jsp modifica   <...
Il programma EliminaTitolo.jsp
Ok! Siamo arrivati al termine del primo giorno di lavoro <ul><li>Che cosa abbiamo prodotto ?  </li></ul><ul><li>Abbiamo im...
The End
Upcoming SlideShare
Loading in …5
×

Lezione JSP database Crud

3,328 views

Published on

Come aggiornare i dati di una tabella relazionale prima di chiavi straniere. Le quattro operazioni fondamentali. CRUD. Visualizzare una lista di righe della tabella relazionale, inserire una nuova riga, ricercare un record conoscendo la sua chiave primaria. Modificare e annullare

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,328
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
111
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Lezione JSP database Crud

  1. 1. Tutorial JSP database-seconda parte Silvano Natalizi Apr 11, 2010
  2. 2. Obiettivo della lezione <ul><li>L’obiettivo di questa lezione è quello di insegnare come si programma una “java server page” per gestire una tabella relazionale con i dati digitati in una form di una pagina HTML. </li></ul>
  3. 3. CRUD <ul><li>CRUD </li></ul><ul><ul><li>Create </li></ul></ul><ul><ul><li>Read </li></ul></ul><ul><ul><li>Update </li></ul></ul><ul><ul><li>Delete </li></ul></ul><ul><li>Dovete imparare ad usare i comandi SQL, all’interno delle opportune istruzioni java, per inserire una nuova riga di una tabella (Create), per leggere dalla tabella (Read), per modificare i dati di una tabella (Update), per eliminare le righe di una tabella (Delete) </li></ul>
  4. 4. Risolviamo il problema per approssimazioni successive <ul><li>Nella prima fase del lavoro pensiamo solo a far girare tutto il programma in maniera corretta in modo da ottenere il risultato desiderato, ossia il CRUD per una tabella relazionale. </li></ul><ul><li>Anzitutto per una sola tabella relazionale priva di chiavi esterne </li></ul><ul><li>Inoltre costruiamo le pagine web senza starci a preoccupare </li></ul><ul><ul><li>né della loro estetica </li></ul></ul><ul><ul><li>né della bontà del modello di programmazione. </li></ul></ul><ul><li>Usiamo le java server pages e mescoliamo senza vergognarci, a nostro piacimento, il codice java con il codice HTML. </li></ul>
  5. 5. Usiamo la pala e il piccone <ul><li>Si. Immergiamo le nostre mani nel codice. Sporchiamoci . </li></ul><ul><li>Picconiamo la roccia, sgretoliamola </li></ul><ul><li>Con la pala impastiamo la terra, i frammenti della roccia, facciamoci i mattoni. </li></ul><ul><li>Muriamo una bella capanna con tutte le funzionalità. </li></ul><ul><li>Facciamo una stanza per inserire i dati, un’altra per leggerli, un’altra ancora per modificarli, ed una per eliminarli. </li></ul>
  6. 6. Semplice teoria. <ul><li>Per eseguire un comando SQL usiamo due distinte istruzioni java. </li></ul><ul><li>1) per leggere executeQuery(“comando SQL”) </li></ul><ul><li>2) per inserire, modificare, eliminare executeUpdate(“comando SQL”) </li></ul><ul><li>il comando SQL deve essere inserito come stringa </li></ul><ul><ul><li>ad esempio String leggi=“Select * from titolo”; </li></ul></ul><ul><ul><li>Le variabili devono essere inserite tra una coppia di apostrofi e di doppie virgolette e di doppi +, al seguente modo </li></ul></ul><ul><ul><ul><li>‘” +codice+”’ </li></ul></ul></ul>
  7. 7. Esempio <ul><li>ResultSet rs=s.executeQuery(&quot; select * from titolo where id ='&quot;+codice+&quot;' &quot;); </li></ul><ul><li>String inserisci=&quot; insert into titolo (id,titolo,prezzo) values ('&quot;+max+&quot;' , '&quot;+titolo+&quot;' , '&quot;+prezzo+&quot;' ) &quot;; </li></ul><ul><li>s.executeUpdate(inserisci); </li></ul><ul><li>inserisci=&quot; update titolo set titolo='&quot;+titolo+&quot;', prezzo= &quot;+prezzo+&quot; where id= &quot;+chiave+&quot;&quot;; </li></ul>
  8. 8. Facciamo una prima pagina menu.html con la scelta dei comandi
  9. 9. Le pagine html <ul><li>Per ogni opzione del menù, creiamo una nuova pagina con la relativa form </li></ul><ul><ul><li>Scegliamo i nomi delle pagine html tutti in caratteri minuscoli </li></ul></ul><ul><ul><li>I nomi delle pagine jsp maiuscoli, come con le classi java </li></ul></ul><ul><li>Anzitutto faremo le pagine: </li></ul><ul><ul><li>inseriscititolo.html </li></ul></ul><ul><ul><li>ElencoTitoli.jsp (con l’estensione jsp perché c’è del codice java insieme al codice html. </li></ul></ul>
  10. 10. Pagina html con la form di inserimento di un nuovo titolo
  11. 11. Programma per inserire nella tabella i dati della form
  12. 12. Esame del programma InserisciTitolo.jsp - 1 <ul><li>9) carica in memoria il DriverManager </li></ul><ul><li>10-11) crea l’oggetto c di collegamento al nostro database libri </li></ul><ul><li>12) crea l’oggetto s della classe Statement per il collegamento c </li></ul><ul><ul><li>L’oggetto s ha i metodi </li></ul></ul><ul><ul><ul><li>executeQuery(…) e </li></ul></ul></ul><ul><ul><ul><li>executeUpdate(…) </li></ul></ul></ul>
  13. 13. Esame del programma InserisciTitolo.jsp - 2 <ul><li>Il programma deve gestire la chiave primaria id. L’utente non sa della sua esistenza e non deve preoccuparsene. </li></ul><ul><li>13) cerca il valore più alto del campo id, ossia della chiave primaria. </li></ul><ul><li>14) definizione della variabile max </li></ul><ul><li>18-20) copia il valore massimo di id da rs a max </li></ul><ul><li>21) incrementa di uno il valore massimo id </li></ul><ul><li>Infine questo valore è quello da usare per id. </li></ul>
  14. 14. Esame del programma InserisciTitolo.jsp - 3 <ul><li>15-17) definizione delle variabili nelle quali salvare i valori dei dati digitati nella form </li></ul><ul><li>16) definizione della variabile della stringa SQL </li></ul><ul><li>22-23) lettura dei dati dalla request e loro assegnazione alla variabili opportunamente definite </li></ul><ul><li>24) creazione della stringa SQL </li></ul><ul><li>25) esecuzione del comando SQL per creare la nuova riga della tabella </li></ul>
  15. 15. Esame del programma InserisciTitolo.jsp - 4 <ul><li>Pagina html restituita al browser </li></ul><ul><li>30) assegnazione dei valori delle variabili java alla pagina html </li></ul>
  16. 16. Osservazione importante <ul><li>Tutto funziona, purchè non vengano inseriti nei dati digitati nella form degli apostrofi. </li></ul><ul><li>Ad esempio, provate a digitare nel titolo una frase con un apostrofo: L’uomo migliore </li></ul><ul><li>Otterrete questo errore </li></ul>
  17. 17. Visualizzazione dell’elenco dei titoli
  18. 18. Spiegazione del precedente programma <ul><li>Quali sono gli elementi caratteristici del precedente codice ? </li></ul><ul><li>E’ molto semplice: </li></ul><ul><ul><li>Al solito c’è il caricamento in memoria del DriverManager. </li></ul></ul><ul><ul><li>Il collegamento con il nostro particolare database. </li></ul></ul><ul><ul><li>La creazione di un oggetto Statement </li></ul></ul><ul><ul><li>L’uso del metodo executeQuery(…) con il comando SQL </li></ul></ul><ul><ul><li>L’utilizzo della iterazione while per ricavare ogni riga risultato della query dall’oggetto rs di ResultSet </li></ul></ul><ul><ul><li>La visualizzazione dei dati di ogni riga tramite una tabella HTML </li></ul></ul>
  19. 19. Aggiornamento di una riga esistente <ul><li>Per aggiornare un record esistente in una tabella, occorre anzitutto ricercarlo nella tabella e visualizzarlo per permettere all’utente di modificare i dati richiesti. </li></ul>
  20. 20. Ricerca record da modificare <ul><li>La ricerca si può fare con diversi criteri: per chiave primaria, per titolo, per parola. </li></ul><ul><li>Per il momento implementiamo la ricerca per chiave primaria </li></ul>
  21. 21. Programma per la ricerca, con la chiave primaria
  22. 22. Se il record è trovato… <ul><li>La chiave primaria non viene visualizzata, perché l’utente non deve averne l’accesso ed il permesso di modificarla. La gestiona della chiave primaria è affidata al programma. </li></ul>
  23. 23. Esame delle istruzioni di CercaTitolo.jsp <ul><li>Per ogni valore di chiave primaria c’è uno ed un solo record. </li></ul><ul><li>Pertanto la ricerca o lo trova o non lo trova. </li></ul><ul><li>Nel caso in cui lo trova il risultato è una sola riga </li></ul><ul><li>15) rs.next() è o true o false </li></ul><ul><li>se è true 16-30) ricavo i valori dei dati digitati e poi costruisco una form inizializzandola con questi valori, tramite value=“<%=titolo%>” </li></ul>
  24. 24. Modifica dei dati
  25. 25. Risultato della modifica dei dati
  26. 26. Eliminazione di una riga della tabella <ul><li>Anche in questo caso, prima di eliminare, dobbiamo ritrovare la riga da cancellare. </li></ul><ul><li>E’ evidente che la prima parte del lavoro di programmazione è uguale a quella della ricerca precedente. </li></ul><ul><li>Come si può fare? </li></ul><ul><li>Possiamo avere del codice duplicato, nel senso che duplico con un altro nome RicercaTitolo.jsp e nel caso in cui il record è trovato si costruisce una form con una action che punta ad una nuova jsp: Elimina.jsp </li></ul><ul><li>Dentro questa jsp metto il codice di eliminazione della riga richiesta. </li></ul>
  27. 27. Poca intelligenza ? <ul><li>Nello spirito della vanga e del piccone, procediamo su questa strada che richiede un grosso sforzo di manovalanza, e poca materia grigia. </li></ul><ul><li>Ma… </li></ul><ul><li>Il nostro obiettivo è quello di farci i muscoli. </li></ul><ul><li>E via rotoliamoci nel fango del codice! </li></ul><ul><li>L’importante è raggiungere infine l’obiettivo. </li></ul>
  28. 28. Piano d’azione <ul><li>Duplichiamo CercaTitolo.jsp  CercaTitolo1.jsp </li></ul><ul><li>In CercaTitolo1.jsp modifica  </li></ul><ul><li><form action=&quot;ModificaTitolo.jsp&quot; method=&quot;GET&quot;>  </li></ul><ul><li><form action=&quot;EliminaTitolo.jsp&quot; method=&quot;GET&quot;> </li></ul><ul><li>Implementare EliminaTitolo.jsp. Poichè è molto simile a ModificaTitolo.jsp conviene duplicarlo, eliminare le istruzioni che non servono e sostituire l’Update con la Delete. </li></ul><ul><li>Bisogna duplicare la pagina cercatitolo.html  cercatitolo1.html </li></ul><ul><li>In essa il valore di action=“CercaTitolo1.html” </li></ul><ul><li>Inoltre nella pagina menu.html bisogna mettere il link a cercatitolo1.jsp nell’opzione del “Elimina un titolo” </li></ul>
  29. 29. Il programma EliminaTitolo.jsp
  30. 30. Ok! Siamo arrivati al termine del primo giorno di lavoro <ul><li>Che cosa abbiamo prodotto ? </li></ul><ul><li>Abbiamo implementato le quattro operazioni fondamentali del CRUD. </li></ul><ul><li>Tuttavia abbiamo usato molto codice duplicato. </li></ul><ul><li>Per ogni tabella dobbiamo ripetere tutto questo lavoro (duplicare tutto il codice), aumentando a dismisura il codice duplicato. Ciò vuol dire che se devo fare una modifica, la devo ripetere dovunque si trova, ossia in tutto il codice duplicato! </li></ul>
  31. 31. The End

×