Lezione JSP database Crud

31
Jan 18, 2 022 Tutorial JSP database- seconda parte Silvano Natalizi

description

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

Transcript of Lezione JSP database Crud

Page 1: Lezione JSP database Crud

Apr 13, 2023

Tutorial JSP database-seconda parte

Silvano Natalizi

Page 2: Lezione JSP database Crud

Obiettivo della lezione

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.

Page 3: Lezione JSP database Crud

CRUD

CRUD Create Read Update Delete

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)

Page 4: Lezione JSP database Crud

Risolviamo il problema per approssimazioni successive

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.

Anzitutto per una sola tabella relazionale priva di chiavi esterne Inoltre costruiamo le pagine web senza starci a preoccupare

né della loro estetica né della bontà del modello di programmazione.

Usiamo le java server pages e mescoliamo senza vergognarci, a nostro piacimento, il codice java con il codice HTML.

Page 5: Lezione JSP database Crud

Usiamo la pala e il piccone

Si. Immergiamo le nostre mani nel codice. Sporchiamoci .

Picconiamo la roccia, sgretoliamola Con la pala impastiamo la terra, i frammenti della

roccia, facciamoci i mattoni. Muriamo una bella capanna con tutte le funzionalità. Facciamo una stanza per inserire i dati, un’altra per

leggerli, un’altra ancora per modificarli, ed una per eliminarli.

Page 6: Lezione JSP database Crud

Semplice teoria.

Per eseguire un comando SQL usiamo due distinte istruzioni java.

1) per leggere executeQuery(“comando SQL”) 2) per inserire, modificare, eliminare

executeUpdate(“comando SQL”) il comando SQL deve essere inserito come stringa

ad esempio String leggi=“Select * from titolo”; Le variabili devono essere inserite tra una coppia di apostrofi

e di doppie virgolette e di doppi +, al seguente modo ‘”+codice+”’

Page 7: Lezione JSP database Crud

Esempio

ResultSet rs=s.executeQuery("select * from titolo where id='"+codice+"'");

String inserisci="insert into titolo (id,titolo,prezzo) values ('"+max+"','"+titolo+"','"+prezzo+"')";

s.executeUpdate(inserisci);

inserisci="update titolo set titolo='"+titolo+"', prezzo="+prezzo+" where id="+chiave+"";

Page 8: Lezione JSP database Crud

Facciamo una prima pagina menu.html con la scelta dei comandi

Page 9: Lezione JSP database Crud

Le pagine html

Per ogni opzione del menù, creiamo una nuova pagina con la relativa form Scegliamo i nomi delle pagine html tutti in caratteri minuscoli I nomi delle pagine jsp maiuscoli, come con le classi java

Anzitutto faremo le pagine: inseriscititolo.html ElencoTitoli.jsp (con l’estensione jsp perché c’è del codice

java insieme al codice html.

Page 10: Lezione JSP database Crud

Pagina html con la form di inserimento di un nuovo titolo

Page 11: Lezione JSP database Crud

Programma per inserire nella tabella i dati della form

Page 12: Lezione JSP database Crud

Esame del programma InserisciTitolo.jsp - 1

9) carica in memoria il DriverManager 10-11) crea l’oggetto c di collegamento al

nostro database libri 12) crea l’oggetto s della classe Statement per il

collegamento c L’oggetto s ha i metodi

executeQuery(…) e executeUpdate(…)

Page 13: Lezione JSP database Crud

Esame del programma InserisciTitolo.jsp - 2

Il programma deve gestire la chiave primaria id. L’utente non sa della sua esistenza e non deve preoccuparsene.

13) cerca il valore più alto del campo id, ossia della chiave primaria. 14) definizione della variabile max 18-20) copia il valore massimo di id da rs a max 21) incrementa di uno il valore massimo id Infine questo valore è quello da usare per id.

Page 14: Lezione JSP database Crud

Esame del programma InserisciTitolo.jsp - 3

15-17) definizione delle variabili nelle quali salvare i valori dei dati digitati nella form

16) definizione della variabile della stringa SQL 22-23) lettura dei dati dalla request e loro assegnazione alla variabili

opportunamente definite 24) creazione della stringa SQL 25) esecuzione del comando SQL per creare la nuova riga della tabella

Page 15: Lezione JSP database Crud

Esame del programma InserisciTitolo.jsp - 4

Pagina html restituita al browser 30) assegnazione dei valori delle variabili java alla

pagina html

Page 16: Lezione JSP database Crud

Osservazione importante Tutto funziona, purchè non

vengano inseriti nei dati digitati nella form degli apostrofi.

Ad esempio, provate a digitare nel titolo una frase con un apostrofo: L’uomo migliore

Otterrete questo errore

Page 17: Lezione JSP database Crud

Visualizzazione dell’elenco dei titoli

Page 18: Lezione JSP database Crud

Spiegazione del precedente programma

Quali sono gli elementi caratteristici del precedente codice ?

E’ molto semplice: Al solito c’è il caricamento in memoria del DriverManager. Il collegamento con il nostro particolare database. La creazione di un oggetto Statement L’uso del metodo executeQuery(…) con il comando SQL L’utilizzo della iterazione while per ricavare ogni riga

risultato della query dall’oggetto rs di ResultSet La visualizzazione dei dati di ogni riga tramite una tabella

HTML

Page 19: Lezione JSP database Crud

Aggiornamento di una riga esistente

Per aggiornare un record esistente in una tabella, occorre anzitutto ricercarlo nella tabella e visualizzarlo per permettere all’utente di modificare i dati richiesti.

Page 20: Lezione JSP database Crud

Ricerca record da modificare La ricerca si può fare con diversi

criteri: per chiave primaria, per titolo, per parola.

Per il momento implementiamo la ricerca per chiave primaria

Page 21: Lezione JSP database Crud

Programma per la ricerca, con la chiave primaria

Page 22: Lezione JSP database Crud

Se il record è trovato…

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.

Page 23: Lezione JSP database Crud

Esame delle istruzioni di CercaTitolo.jsp

Per ogni valore di chiave primaria c’è uno ed un solo record. Pertanto la ricerca o lo trova o non lo trova. Nel caso in cui lo trova il risultato è una sola riga 15) rs.next() è o true o false se è true 16-30) ricavo i valori dei dati digitati e poi costruisco una form inizializzandola

con questi valori, tramite value=“<%=titolo%>”

Page 24: Lezione JSP database Crud

Modifica dei dati

Page 25: Lezione JSP database Crud

Risultato della modifica dei dati

Page 26: Lezione JSP database Crud

Eliminazione di una riga della tabella

Anche in questo caso, prima di eliminare, dobbiamo ritrovare la riga da cancellare.

E’ evidente che la prima parte del lavoro di programmazione è uguale a quella della ricerca precedente.

Come si può fare? 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

Dentro questa jsp metto il codice di eliminazione della riga richiesta.

Page 27: Lezione JSP database Crud

Poca intelligenza ?

Nello spirito della vanga e del piccone, procediamo su questa strada che richiede un grosso sforzo di manovalanza, e poca materia grigia.

Ma… Il nostro obiettivo è quello di farci i muscoli. E via rotoliamoci nel fango del codice! L’importante è raggiungere infine l’obiettivo.

Page 28: Lezione JSP database Crud

Piano d’azione

Duplichiamo CercaTitolo.jsp CercaTitolo1.jsp In CercaTitolo1.jsp modifica <form action="ModificaTitolo.jsp" method="GET"> <form action="EliminaTitolo.jsp" method="GET"> Implementare EliminaTitolo.jsp. Poichè è molto simile a

ModificaTitolo.jsp conviene duplicarlo, eliminare le istruzioni che non servono e sostituire l’Update con la Delete.

Bisogna duplicare la pagina cercatitolo.htmlcercatitolo1.html In essa il valore di action=“CercaTitolo1.html” Inoltre nella pagina menu.html bisogna mettere il link a

cercatitolo1.jsp nell’opzione del “Elimina un titolo”

Page 29: Lezione JSP database Crud

Il programma EliminaTitolo.jsp

Page 30: Lezione JSP database Crud

Ok! Siamo arrivati al termine del primo giorno di lavoro

Che cosa abbiamo prodotto ? Abbiamo implementato le quattro operazioni

fondamentali del CRUD. Tuttavia abbiamo usato molto codice duplicato. 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!

Page 31: Lezione JSP database Crud

The End