Torna alla pagina di Tecnologie Web
:: Laboratorio 7 ::
Esercizio 1
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>
Esercizio 2
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>
Esercizio 3
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>
Torna alla pagina di Tecnologie Web