cerca
Tecnologie Web - Laboratorio 7
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Tecnologie Web - Laboratorio 7

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