Torna alla pagina di Tecnologie Web
:: Laboratorio 7 ::
Seguite le note indicate sopra e create (con PhpMyAdmin) in un database di vostra scelta una tabella come quella vista a lezione, qui riportata per vostra comodità:
CREATE TABLE IF NOT EXISTS persone ( id INT AUTO_INCREMENT, nome VARCHAR(20) NOT NULL, cognome VARCHAR(35) NOT NULL, eta INT NOT NULL, citta VARCHAR(35) NOT NULL, UNIQUE(id) );
Scrivete il codice JSP, writeDBdata.jsp, per permettere l'inserimento di records nella tabella. Create la pagina readDBdata.jsp e provate ad eseguirla.
SOLUZIONE
File HTML formIns.html contenente la form che permette di inviare i dati al file .jsp.
<html> <head><title> il mio DB</title></head> <body> <h2>Scrittura dei dati in un database</h2> <form action="writeDBdata.jsp" method="post"> inserisci il nome <input type="text" name="nome"/></br> inserisci il cognome <input type="text" name="cognome"/></br> inserisci l'età <input type="text" name="eta"/></br> inserisci la città <input type="text" name="citta"/></br> <input type="submit" value="aggiungi"> </form> </body> </html>
File WriteDBdata.jsp che va a scrivere nel database i dati inseriti nella form precedente:
NOTA: user e password sono quelli indicati a lezione. Nel comando INSERT TO ci va il nome della vostra tabella.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <sql:setDataSource url="jdbc:mysql://localhost/dbjsp2" driver="com.mysql.jdbc.Driver" user="******" password="*****" /> <sql:update> INSERT INTO persone_bschiavi (nome, cognome, eta, citta) VALUES( ?, ?, ?, ?) <sql:param value="${param.nome}"/> <sql:param value="${param.cognome}"/> <sql:param value="${param.eta}"/> <sql:param value="${param.citta}"/> </sql:update> <html> <head><title>operazione</title></head> <body> <form action="readDBdata.jsp" method="post"> <h3>L'operazione è andata a buon fine. Clicca per visualizzare la tabella </br> <input type="submit" value="visualizza"> </form> </body> </html>
File ReadDBdata.jsp che va a leggere i dati presenti nel database e li mostra a video:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <sql:setDataSource url="jdbc:mysql://localhost/dbjsp2" driver="com.mysql.jdbc.Driver" user="*****" password="*****" /> <html> <head><title> Lettura del DB </title></head> <body> <h2>Lettura dei dati in un database</h2> <sql:query var="pers"> SELECT * FROM persone_bschiavi </sql:query> <table background="pink" border="1"> <tr> <td>Nome</td> <td>Cognome</td> <td>età</td> <td>città</td> </tr> <c:forEach items="${pers.rows}" var="persona"> <tr> <td><c:out value="${persona.Nome}"/></td> <td><c:out value="${persona.Cognome}"/></td> <td><c:out value="${persona.Eta}"/></td> <td><c:out value="${persona.citta}"/></td> </tr> </c:forEach> </table> </body> </html>
Scrivere una JSP che conti il numero di record contenuti nella vostra tabella.
SOLUZIONE
E' lo stesso file di prima con aggiunta una sola riga:Numero di righe: <c:out value="${pers.rowCount}"/>
Quindi:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <sql:setDataSource url="jdbc:mysql://localhost/dbjsp2" driver="com.mysql.jdbc.Driver" user="*****" password="*****" /> <html> <head><title> Lettura del DB </title></head> <body> <h2>Lettura dei dati in un database</h2> <sql:query var="pers"> SELECT * FROM persone_bschiavi </sql:query> <table background="pink" border="1"> <tr> <td>Nome</td> <td>Cognome</td> <td>età</td> <td>città</td> </tr> <c:forEach items="${pers.rows}" var="persona"> <tr> <td><c:out value="${persona.Nome}"/></td> <td><c:out value="${persona.Cognome}"/></td> <td><c:out value="${persona.Eta}"/></td> <td><c:out value="${persona.citta}"/></td> </tr> </c:forEach> </table> </br> Numero di righe: <c:out value="${pers.rowCount}"/> </body> </html>
Scrivere una JSP con una query che visualizzi i record relativi a persone con più di 18 anni.
SOLUZIONE
Per semplicità la condizione la si può inserire direttamente nel codice SQL:
WHERE eta > 18
ma è possibile anche inserire una condizione in codice jstl(andando a controllare che il valore dell'età persona.Eta sia maggiore di 18). Il risultato è lo stesso.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <sql:setDataSource url="jdbc:mysql://localhost/dbjsp2" driver="com.mysql.jdbc.Driver" user="jsp" password="Jsp_web1!" /> <html> <head><title> Lettura del DB </title></head> <body> <h1>Lettura dei dati in un database</h1> <sql:query var="pers"> SELECT * FROM persone_bschiavi WHERE eta > 18 </sql:query> <table background="pink" border="1"> <tr> <td>Nome</td> <td>Cognome</td> <td>età</td> <td>città</td> </tr> <c:forEach items="${pers.rows}" var="persona"> <tr> <td><c:out value="${persona.Nome}"/></td> <td><c:out value="${persona.Cognome}"/></td> <td><c:out value="${persona.Eta}"/></td> <td><c:out value="${persona.citta}"/></td> </tr> </c:forEach> </table> </br>Numero di righe: <c:out value="${pers.rowCount}"/> </body> </html>