Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice"

Transcript

1 Liberamente adattato da Java dai fondamenti alla programmazione avanzata JS2E versione 1.5 di Karsten Samaschke, Apogeo editrice Vogliamo realizzare un'applicazione di tipo CRUD (Create, Read, Update, Delete). Queste sono infatti le funzioni più frequentemente richieste quando si lavora con tabelle di dati. Prepariamo quindi un database di prova, guestbook_db, e una tabella di prova, chiamiamola guestbook, la cui struttura è la seguente: Seguono alcuni dati di esempio: Ecco come si presenta l'interfaccia web per la gestione dei record della tabella guestbook. Pag. 1/26

2 Se vogliamo aggiungere un record usiamo il link Nuovo; inseriamo dei dati (solo due campi per semplicità, non c'è inoltre nessun tipo di controllo di validità dei dati) e premiamo sul pulsante Inserisci: Se tutto è andato a buon fine, appare un messaggio di conferma: Pag. 2/26

3 Clicchiamo su uno dei link Modifica in corrispondenza della voce che vogliamo modificare: Se tutto è Ok, appare un messaggio di conferma: Pag. 3/26

4 In maniera analoga, possiamo cancellare un record, cliccando sul link Cancella; per semplicità abbiamo omesso qualsiasi richiesta di conferma (ma che possiamo inserire mediante del codice javascript); questo significa che la cancellazione è permanente: Nello scrivere il codice di accesso al database, usiamo il cosiddetto approccio DAO, un design pattern che si rivela molto utile nella pratica corrente. Esso consiste nella: definizione delle classi che devono rappresentare i dati messa a disposizione di un'interfaccia che offre metodi per accedere ai dati implementazione dell'interfaccia nelle classi concrete messa a disposizione di una classe Factory (Factory è il nome di un altro design pattern di cui parleremo in un prossimo articolo), mediante la quale creare un'istanza della classe concreta per la selezione dei dati Questo approccio offre diversi vantaggi: nell'applicazione lavorate soltanto con l'interfaccia DAO: l'implementazione concreta rimane nascosta. Ciò significa una manutenzione più facile poiché la classe di accesso ai dati concreti può essere modificata senza che il codice applicativo debba essere rivisto gli eventuali accessi al database sono mediati da una classe centrale. Se il modello dei dati cambia (database, file di testo, file XML ecc), l'adattamento riguarderà soltanto questa classe; le chiamate ai metodi non richiederanno modifiche Il codice proposto fa uso di 4 classi di supporto e di 7 pagine jsp. Le classi di supporto sono: 1. GuestbookEntry, che rappresenta una voce nella tabella guestbook di esempio 2. GuestbookDAO, l' interfaccia che definisce i metodi per l'accesso al database 3. MySQLGuestbookDAO, una implementazione concreta di GuestbookDAO 4. GuestbookDAOFactory, la classe Factory per la creazione di istanze di GuestbookDAO Tutto ciò che occorre per connettersi al database è concentrato in una sola istruzione: GuestbookDAO gb = GuestbookDAOFactory.getInstance(); mentre i metodi per la manipolazione dei dati sono forniti dai metodi add, update, delete e Pag. 4/26

5 retrieve come evidenziato nel frammento di codice seguente: // inserimento; supponiamo l'id del record sia 192 GuestbookDAO gb = GuestbookDAOFactory.getInstance(); GuestbookEntry entry = new GuestbookEntry(); entry.setmessage("ciao ciao"); entry.setsender("maurizio"); gb.add(entry); out.println("record aggiunto "); //modifica gb = GuestbookDAOFactory.getInstance(); entry.setid(195); entry.setmessage("ancora tu"); entry.setsender("ancora tu"); gb.update(entry); out.println("record modificato "); //cancellazione gb = GuestbookDAOFactory.getInstance(); entry.setid(195); gb.delete(entry); out.println("record cancellato "); Nell'applicativo di cui presentiamo di seguito i codici sorgenti, facciamo in modo, nel momento in cui l'utente richiede una pagina, di stabilire una connessione col database, di effettuare le elaborazioni e di chiudere la connessione. Purtroppo questo approccio può andar bene fino a un certo punto perchè le operazioni di apertura e di mantenimento della connessione sono, da un punto di vista computazionale, particolarmente gravose e richiedono un certo tempo che, per siti con traffico molto sostenuto come possono essere i siti di e-commerce, può essere molto prezioso. Si potrebbe pensare di ricorrere a variabili di sessione per il mantenimento della connessione; tuttavia anche questo approccio non è quello giusto in quanto l'utente poi si ritrova a consultare magari per lungo tempo i dati forniti dal server per cui le risorse allocate per il mantenimento della sessione in questo caso sono inutili. Una soluzione di compromesso consiste nell'usare un pool di connessioni che come dice il termine consiste nel raggruppare e trattare come una singola unità un insieme di connessioni le quali vengono allocate e poi rilasciate via via come descritto meglio in seguito. La cosa interessante è che occorre fare solo qualche leggera modifica all'applicativo perchè tutto continui a funzionare egregiamente. L'unico vincolo è che l'application server supporti JNDI, un servizio ormai ampiamente diffuso in tutti i moderni application server e servlet container, come Tomcat o Application Server 9 della Sun. Ecco il codice (parzialmente commentato) delle classi: GuestbookEntry.java package mypackage; import java.util.date; Pag. 5/26

6 * Rappresenta una voce nel guestbook public class GuestbookEntry { private private private private int id = 0; String message = ""; String sender; Date created = new Date(); public int getid() { return id; public void setid(int id) { this.id = id; public String getmessage() { return message; public void setmessage(string message) { this.message = message; public String getsender() { return sender; public void setsender(string sender) { this.sender = sender; public Date getcreated() { return created; public void setcreated(date created) { this.created = created; // fine classe GuestbookEntry GuestbookDAO.java package mypackage; import java.sql.sqlexception; * Definisce i metodi per l'accesso * al database guestbook public interface GuestbookDAO { * Recupera un array di record Pag. 6/26

7 public GuestbookEntry[] retrieve() throws SQLException; * Aggiunge un record al guestbook public int add(guestbookentry entry) throws SQLException; * Aggiorna un record al guestbook public int update(guestbookentry entry) throws SQLException; * Cancella un record dal guestbook public int delete(guestbookentry entry) throws SQLException; * Recupera un record con l'id specificato public GuestbookEntry getentry(int id) throws SQLException; // fine interfaccia GuestbookDAO MySQLGuestbookDAO.java package mypackage; import java.sql.*; import java.util.arraylist; import java.util.properties; import java.io.fileinputstream; import java.io.file; import java.io.filenotfoundexception; import java.io.ioexception; import javax.naming.namingexception; * Implementazione reale di GuestbookDAO public class MySQLGuestbookDAO implements GuestbookDAO { private Connection conn; public MySQLGuestbookDAO() throws ClassNotFoundException, SQLException, NamingException { try { String classname = "com.mysql.jdbc.driver"; String connstr = "jdbc:mysql://localhost:3306/guestbook_db?user=root&password="; Class.forName(className); conn = DriverManager.getConnection(connStr); catch (ClassNotFoundException e) { throw new ClassNotFoundException("Driver non trovati"); catch (SQLException e) { throw new SQLException("Errore! Impossibile stabilire una connessione col db"); // fine costruttore Pag. 7/26

8 * Recupera un elenco di record dal guestbook public GuestbookEntry[] retrieve() throws SQLException { ArrayList<GuestbookEntry> list = new ArrayList<GuestbookEntry>(); if(conn!= null) { try { PreparedStatement stmt = conn.preparestatement( "SELECT id, message, sender, messagedate FROM guestbook ORDER BY id"); ResultSet rs = stmt.executequery(); while(rs.next()) { int id = rs.getint(1); String message = rs.getstring(2); String sender = rs.getstring(3); java.util.date d = (java.util.date)rs.getobject(4); /* if(sender == null sender.length() == 0) { sender = "mittente ignoto"; GuestbookEntry entry = new GuestbookEntry(); entry.setcreated(d); entry.setid(id); entry.setmessage(message); entry.setsender(sender); list.add(entry); conn.close(); catch (SQLException e) { throw new SQLException("Errore: "+e.getmessage()); return list.toarray(new GuestbookEntry[0]); // fine metodo retrieve * Aggiunge un record al guestbook public int add(guestbookentry entry) throws SQLException { int result = 0; if(conn!= null) { try { PreparedStatement stmt = conn.preparestatement( "INSERT INTO guestbook (message, sender, messagedate) " + "VALUES (?,?,?)"); Pag. 8/26

9 stmt.setstring(1, entry.getmessage()); stmt.setstring(2, entry.getsender()); stmt.setobject(3, entry.getcreated()); result = stmt.executeupdate(); conn.close(); catch (SQLException e) { throw new SQLException("Errore: "+e.getmessage()); return result; //fine metodo add * Aggiorna un record del guestbook public int update(guestbookentry entry) throws SQLException { int result = 0; if(conn!= null) { try { PreparedStatement stmt = conn.preparestatement( "UPDATE guestbook SET message =?, sender =?, messagedate =? " + "WHERE id =?"); stmt.setstring(1, entry.getmessage()); stmt.setstring(2, entry.getsender()); stmt.setobject(3, entry.getcreated()); stmt.setint(4, entry.getid()); result = stmt.executeupdate(); conn.close(); catch (SQLException e) { throw new SQLException("Errore: "+e.getmessage()); return result; // fine metodo update * Cancella un record dal guestbook public int delete(guestbookentry entry) throws SQLException { int result = 0; if(conn!= null) { try { PreparedStatement stmt = conn.preparestatement( "DELETE FROM guestbook WHERE id =?"); stmt.setint(1, entry.getid()); Pag. 9/26

10 result = stmt.executeupdate(); conn.close(); catch (SQLException e) { throw new SQLException("Errore: "+e.getmessage()); return result; // fine metodo delete * Ottiene un record dal guestbook con l'id specificato public GuestbookEntry getentry(int id) throws SQLException { GuestbookEntry entry = null; if(conn!= null) { try { PreparedStatement stmt = conn.preparestatement( "SELECT * FROM guestbook WHERE id=?"); stmt.setint(1, id); ResultSet rs = stmt.executequery(); if (rs.next()) { entry = new GuestbookEntry(); int i = rs.getint(1); String message = rs.getstring(2); String sender = rs.getstring(3); java.util.date d = (java.util.date)rs.getobject(4); entry.setcreated(d); entry.setid(i); entry.setmessage(message); entry.setsender(sender); // non chiudiamo subito la connessione // potrebbe tornarci utile return entry; catch (SQLException e) { throw new SQLException("Errore: "+e.getmessage()); // fine if return entry; / fine metodo getentry // fine classe MySQLGuestbookDAO GuestbookDAOFactory.java package mypackage; import java.sql.sqlexception; Pag. 10/26

11 import javax.naming.namingexception; * Factory per la creazione di istanze di GuestbookDAO public class GuestbookDAOFactory { public static GuestbookDAO getinstance() throws ClassNotFoundException, SQLException, NamingException { return new MySQLGuestbookDAO(); Segue il codice delle pagine web: guestbookadd.jsp <%@page contenttype="text/html"%> <%@page pageencoding="utf-8"%> <%@page import="mypackage.*" %> <%@page errorpage="errore.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> <link href="css.css" rel="stylesheet" type="text/css" /> </head> <body> <h3>aggiungi</h3> <form name="frminserisci" method="post" action="<%=request.getrequesturi()%>"> Sender: <input type="text" name="txtsender" value="" /><br/> Message: <textarea name="txtmessage" cols="35" rows="5"></textarea><br/> <input type="submit" value="inserisci" name="btninserisci" /> </form> <% if (request.getparameter("btninserisci")!=null) { int result = 0; String message=request.getparameter("txtmessage"); String sender=request.getparameter("txtsender"); GuestbookDAO gb = GuestbookDAOFactory.getInstance(); // se uso una variabile di sessione potrei recuperare la connessione al database // direttamente dalla sessione //GuestbookDAO gb = (GuestbookDAO) session.getattribute("gb"); if (gb!=null) { GuestbookEntry entry = new GuestbookEntry(); entry.setmessage(message); Pag. 11/26

12 entry.setsender(sender); result = gb.add(entry); if (result!= 0) response.sendredirect("guestbookretrieve.jsp?message=record registrato correttamente"); else response.sendredirect("guestbookretrieve.jsp?message=impossibile registrare il record"); %> </body> </html> guestbookdelete.jsp <%@page contenttype="text/html"%> <%@page pageencoding="utf-8"%> <%@page import="mypackage.*" %> <%@page errorpage="errore.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> <link href="css.css" rel="stylesheet" type="text/css" /> </head> <body> <h3>modifica</h3> <% if (request.getparameter("id")!=null) { int result = 0; int id = Integer.parseInt(request.getParameter("id")); GuestbookDAO gb = GuestbookDAOFactory.getInstance(); //GuestbookDAO gb = (GuestbookDAO) session.getattribute("gb"); if (gb!=null) { GuestbookEntry entry = gb.getentry(id); if (entry!= null) { out.println("cancellazione record id="+entry.getid()+"<br/>"); result = gb.delete(entry); if (result!= 0) Pag. 12/26

13 response.sendredirect("guestbookretrieve.jsp?message=record cancellato correttamente"); else response.sendredirect("guestbookretrieve.jsp?message=impossibile cancellare il record"); else response.sendredirect("guestbookretrieve.jsp?message=record non trovato"); else response.sendredirect("guestbookretrieve.jsp"); %> </body> </html> guestbookretrieve.jsp contenttype="text/html"%> pageencoding="utf-8"%> import="mypackage.*" %> errorpage="errore.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> <link rel="stylesheet" type="text/css" href="css.css"> </head> <body> <h3></h3> <% /* * codice valido nel caso di una sessione if (session.getattribute("gb")==null) { gb = GuestbookDAOFactory.getInstance(); session.setattribute("gb",gb); session.setmaxinactiveinterval(-1); else { gb = (GuestbookDAO) session.getattribute("gb"); GuestbookDAO gb = GuestbookDAOFactory.getInstance(); GuestbookEntry[] entries = gb.retrieve(); if (request.getparameter("message")!=null) { String message=request.getparameter("message"); out.println("<span class='red'>"+message+"</span>"); Pag. 13/26

14 out.println("<table>"); out.println("<tr>"); out.println("<td>"); out.println("id"); out.println("</td>"); out.println("<td>"); out.println("sender"); out.println("</td>"); out.println("<td>"); out.println("message"); out.println("</td>"); out.println("<td>"); out.println("date"); out.println("</td>"); out.println("<td>"); out.println("modifica"); out.println("</td>"); out.println("<td>"); out.println("cancella"); out.println("</td>"); out.println("</tr>"); for(guestbookentry entry : entries) { out.println("<tr>"); out.println("<td>"); int id=entry.getid(); //out.println(id); out.println(entry.getid()); out.println("</td>"); out.println("<td>"); out.println(entry.getsender()); out.println("</td>"); out.println("<td>"); out.println(entry.getmessage()); out.println("</td>"); out.println("<td>"); out.println(entry.getcreated()); out.println("</td>"); out.println("<td>"); out.println("<a href=guestbookentry.jsp?id="+id+">modifica</a>"); out.println("</td>"); out.println("<td>"); out.println("<a href=guestbookdelete.jsp?id="+id+">cancella</a>"); Pag. 14/26

15 out.println("</td>"); out.println("</tr>"); out.println("</table><br/>"); out.println("<a href=guestbookadd.jsp>nuovo</a>"); %> </body> </html> guestbookupdate.jsp contenttype="text/html"%> pageencoding="utf-8"%> import="mypackage.*" %> errorpage="errore.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> <link href="css.css" rel="stylesheet" type="text/css" /> </head> <body> <h3>aggiornamento</h3> <% if (request.getparameter("btnaggiorna")!=null) { int result = 0; String message = request.getparameter("txtmessage"); String sender = request.getparameter("txtsender"); int id = Integer.parseInt(request.getParameter("id")); GuestbookDAO gb = GuestbookDAOFactory.getInstance(); //GuestbookDAO gb = (GuestbookDAO) session.getattribute("gb"); if (gb!=null) { GuestbookEntry entry = new GuestbookEntry(); entry.setid(id); entry.setmessage(message); entry.setsender(sender); result = gb.update(entry); Pag. 15/26

16 if (result!= 0) response.sendredirect("guestbookretrieve.jsp?message=record aggiornato correttamente"); else response.sendredirect("guestbookretrieve.jsp?message=impossibile aggiornare il record"); else response.sendredirect("guestbookretrieve.jsp"); %> </body> </html> guestbookentry.jsp contenttype="text/html"%> pageencoding="utf-8"%> import="mypackage.*" %> errorpage="errore.jsp" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> <link href="css.css" rel="stylesheet" type="text/css" /> </head> <body> <h3>modifica</h3> <% if (request.getparameter("id")!=null) { int id=integer.parseint(request.getparameter("id")); GuestbookDAO gb = GuestbookDAOFactory.getInstance(); //GuestbookDAO gb = (GuestbookDAO) session.getattribute("gb"); if (gb!=null) { GuestbookEntry entry = gb.getentry(id); if (entry!= null) { out.println("modifica record id="+entry.getid()+"<br/>"); %> /><br/> <form name="frmaggiorna" method="post" action="guestbookupdate.jsp"> Sender: <input type="text" name="txtsender" value="<%=entry.getsender() %>" Message: <textarea name="txtmessage" cols="35" rows="5"><%=entry.getmessage() %></textarea><br/> <input type="hidden" name="id" value="<%=entry.getid() %>" /> <input type="submit" value="aggiorna" name="btnaggiorna" /> Pag. 16/26

17 </form> <% else response.sendredirect("guestbookretrieve.jsp?message=record non esistente"); else response.sendredirect("guestbookretrieve.jsp"); %> </body> </html> errore.jsp contenttype="text/html"%> pageencoding="utf-8"%> iserrorpage="true" %> import="java.io.printwriter" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <% PrintWriter writer=new PrintWriter(out); %> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>pagina di errore</title> <style type="text/css"> <!-body,td,th { font-family: Trebuchet MS; font-size: 10pt; --> </style> </head> <body> <h2>gestione degli errori</h2> <p>si è verificato il seguente errore: <%=exception.getmessage()%></p> </body> </html> Pool di connessioni Con un pool di connessioni, vengono ottimizzate le operazioni di apertura e mantenimento delle connessioni perchè, ad esempio, una connessione chiusa non viene definitivamente eliminata dalla memoria del sistema ma restituita al pool e nel momento in cui è necessaria una nuova connessione, essa viene recuperata direttamente dal pool senza doverne allocare una nuova. Per poter usare i pool di connessioni, è necessario innanzitutto utilizzare JNDI. Per prima cosa, logghiamoci nella console amministrativa del nostro application server (per noi Sun Application Server 9). Pag. 17/26

18 Username di default admin e password adminadmin Pag. 18/26

19 Cerchiamo Resources nell'albero di navigazione di sinistra, quindi scegliamo JDBC > Connection Pools e costruiamo il pool di connessioni MySQLGuestBookPool con i seguenti dati Pag. 19/26

20 Pag. 20/26

21 Pag. 21/26

22 Stabiliamo i parametri fondamnetali di accesso al database e lasciamo tutti gli altri impostati per default (come il numero massimo di connessioni, il tempo di attesa massimo ecc). Facciamo il ping per assicurarci che il pool funzioni correttamente. Pag. 22/26

23 Successivamente, costruiamo un data source JDBC, assegnandogli un nome (JNDI name: nel nostro caso jdbc/guestbook) e associandolo al pool di connessioni MSQLGuestBookPool. Pag. 23/26

24 Occorre poi modificare il deployment descriptor (il file web.xml) in modo tale che contenga un riferimento alla nostra risorsa appena creata (in Netbeans conviene farlo tramite interfaccia grafica). Pag. 24/26

25 Il contenuto del file web.xml è quindi il seguente: <?xml version="1.0" encoding="utf-8"?> <web-app version="2.4" xmlns=" xmlns:xsi=" xsi:schemalocation=" <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <resource-ref> <res-ref-name>jdbc/guestbook</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> <res-sharing-scope>shareable</res-sharing-scope> </resource-ref> </web-app> Pag. 25/26

26 L'ultimo passo è modificare il codice relativo alla creazione della connessione (riportiamo solo il frammento utile), senza modificare in alcun modo il codice già scritto [costruttore MySQLGuestbookDAO()]: try { javax.naming.initialcontext ctx = new javax.naming.initialcontext(); javax.sql.datasource ds = (javax.sql.datasource) ctx.lookup("java:comp/env/jdbc/guestbook"); conn = ds.getconnection(); catch (NamingException e) { throw new NamingException(e.getMessage()); catch(sqlexception e) { throw new SQLException("Errore! Impossibile stabilire una connessione col db"); // fine try-catch al posto di: try { String classname = "com.mysql.jdbc.driver"; String connstr = "jdbc:mysql://localhost:3306/guestbook_db?user=root&password="; Class.forName(className); conn = DriverManager.getConnection(connStr); catch (ClassNotFoundException e) { throw new ClassNotFoundException("Driver non trovati"); catch (SQLException e) { throw new SQLException("Errore! Impossibile stabilire una connessione col db"); // fine try-catch Pag. 26/26

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet 1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Controllo dell utente connesso al sito tramite JSP, Java Beans e Servlet. Ciò che ci proponiamo di fare è l accesso

Dettagli

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java] Per la comprensione del presente articolo, occorre aver assimilato i concetti esposti nell'articolo Prototipo autenticazione utente (file autenticazione_2.pdf). (Tratto da Wikipedia, l'enciclopedia libera)

Dettagli

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java] Per la comprensione del presente articolo, occorre aver assimilato i concetti esposti nell'articolo Prototipo autenticazione utente (file autenticazione_2.pdf). (Tratto da Wikipedia, l'enciclopedia libera)

Dettagli

Laboratorio di sistemi SELECT e checkbox Jsp [Java]

Laboratorio di sistemi SELECT e checkbox Jsp [Java] Fig. 1 - Vogliamo visualizzare book_id, autore e titolo dalla tabella books del database shop Fig. 2 - Tabella books select_checkbox.pdf Pag. 1/5 Cozzetto Fig. 3 - Abbiamo due record in output File index_1.jsp

Dettagli

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement JDBC Programmazione in Ambienti Distribuiti V 1.4 Marco Torchiano 2006 Uso di JDBC Caricamento della classe driver Class.forName() Apertura della connessione DriverManager.getConnection() Creazione di

Dettagli

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans)

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans) Definizione Adattato da "http://it.wikipedia.org/wiki/model-view-controller" Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è il nome di un design pattern fondamentale

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

Laboratorio di sistemi Prima Web Application JSP [Java]

Laboratorio di sistemi Prima Web Application JSP [Java] Vogliamo scrivere la nostra prima web application che legga da tastiera il nostro nome e fornisca un messaggio di saluto. Per costruire la nostra applicazione creiamo con NetBeans un nuovo progetto. File

Dettagli

Capitolo 7. Soluzione: <P align= center > Form di invio nome e cognome </P> <FORM action= nomecognome.exe method= post >

Capitolo 7. Soluzione: <P align= center > Form di invio nome e cognome </P> <FORM action= nomecognome.exe method= post > Capitolo 7 Esercizio 7.1 Commentare le caratteristiche di HTTP come protocollo client-server, evidenziando gli aspetti differenti rispetto ai protocolli client-server tradizionali. La caratteristica che

Dettagli

Utilizzando per la connessione al database un driver di Tipo 1:

Utilizzando per la connessione al database un driver di Tipo 1: Basi di Dati Esercitazione JDBC 25 maggio 2005 Paolo Cappellari Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello)

Dettagli

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL)

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL) Pag. 1/12 Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL) Prendiamo in esame un qualsiasi progetto NetBeans tra quelli studiati che fa uso di un database

Dettagli

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN Il metodo migliore per creare nuovi DB è quello di usare l interfaccia del PHPMYADMIN (che viene installata automaticamente con il pacchetto easy

Dettagli

Un contatore di accessi

Un contatore di accessi Un contatore di accessi Scriviamo una servlet che conta il numero di accessi e lo visualizza. Sfruttiamo il fatto che Tomcat, quando riceve la richiesta di una servlet, crea un istanza della classe corrispondente.

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione Riepilogo

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione Riepilogo Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura Tecnologie Web T Esercitazione 09 Riepilogo Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica:

Dettagli

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 09 Riepilogo

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 09 Riepilogo Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura Tecnologie Web T Esercitazione 09 Riepilogo Home Page del corso: http://www-db.disi.unibo.it/courses/tw/ Versione elettronica:

Dettagli

Corso di Applicazioni Telematiche

Corso di Applicazioni Telematiche Corso di Applicazioni Telematiche A.A. 2008-09 Lezione n.12 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Una Servlet è un componente software scritto in Java,

Dettagli

Laboratorio di Basi di Dati e Multimedia

Laboratorio di Basi di Dati e Multimedia Laboratorio di Basi di Dati e Multimedia Laurea in Tecnologie dell Informazione: Multimedia Docente: Alessandra Di Pierro Email: dipierro@sci.univr.it Lezione 7 Java DataBase Connectivity JDBC consente

Dettagli

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Avvertenze: e severamente vietato consultare libri e appunti; chiunque verrà trovato in possesso di

Dettagli

Basi di Dati Esercitazione JDBC. Giugno 2007

Basi di Dati Esercitazione JDBC. Giugno 2007 Basi di Dati Esercitazione JDBC Giugno 2007 Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello) Catalogo (CodiceFornitore,

Dettagli

Tecnologia e Applicazioni Internet 2011/12

Tecnologia e Applicazioni Internet 2011/12 Tecnologia e Applicazioni Internet 2011/12 Lezione 4 - Persistenza Matteo Vaccari http://matteo.vaccari.name/ matteo.vaccari@uninsubria.it Perché usare un DB relazionale? Per l accesso concorrente ai dati

Dettagli

Verso l architettura MVC-2 Java Server Pages (JSP)

Verso l architettura MVC-2 Java Server Pages (JSP) Verso l architettura MVC-2 Java Server Pages (JSP) 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le

Dettagli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, JDBC e applicazioni 31/05/2004

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, JDBC e applicazioni 31/05/2004 Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Approfondimenti dal capitolo 5: JDBC e applicazioni 31/05/2004 Un esempio: package catenanegozi (Piccola parte di) sistema informativo

Dettagli

Stateless Session Bean

Stateless Session Bean Stateless Session Bean 1 Esempio Stateless Session bean per il calcolo della somma di due numeri reali 2 Struttura del sistema calcolo della somma di due numeri reali Sum implementato con uno stateless

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm Dott.ssa Francesca A. Lisi dott.ssa Francesca A.

Dettagli

Verso l architettura MVC-2 Java Server Pages (JSP)

Verso l architettura MVC-2 Java Server Pages (JSP) Verso l architettura MVC-2 Java Server Pages (JSP) 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 JSP Una pagina JSP può essere vista come uno schema di pagina Web dove: le parti statiche sono scritte in

Dettagli

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni Tomcat & Servlet Programmazione in Ambienti Distribuiti V 1.2 Marco Torchiano 2005 Contenuti Tomcat Applicazioni Web Struttura Sviluppo Deployment Servlet JSP Uso delle sessioni 1 Tomcat Tomcat è un contenitore

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

Le JavaServer Pages - Lezione 7 I JavaBean

Le JavaServer Pages - Lezione 7 I JavaBean Le JavaServer Pages - Lezione 7 I JavaBean A cura di Giuseppe De Pietro (depietro_giuseppe@yahoo.it) Contenuti Nelle lezioni precedenti abbiamo visto gli elementi principali delle Java Server Pages, come

Dettagli

Esercitazione su JDBC

Esercitazione su JDBC Esercitazione su JDBC Basi di Dati L Ingegneria dei Processi Gestionali (Ilaria Bartolini - Roberto Cabras) come usare SQL (1) Le istruzioni SQL possono essere eseguite interattivamente Ese JDBC 2 come

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico JDBC Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 JDBC JDBC (Java Database Connectivity) è una API Java per accedere ed elaborare dati in una sorgente dati (di solito un db

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Appunti della lezione di Database del 3/11/2016 (pomeriggio)

Appunti della lezione di Database del 3/11/2016 (pomeriggio) Appunti della lezione di Database del 3/11/2016 (pomeriggio) Studenti: Andrea Cuna Giuseppe Levantaci [ continuazione dell esercizio della lezione precedente] Creiamo un file excel e incolliamo (incolla

Dettagli

<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> </head> <body>

<html> <head> <meta http-equiv=content-type content=text/html; charset=utf-8> <title>jsp Page</title> </head> <body> itext è una libreria (ottimizzata per l uso in java) per generare pdf al volo ideata da Bruno Lowagie e Paolo Soares. Per poter sviluppare un applicazione con NetBeans, dobbiamo intanto scaricare il file

Dettagli

Connessione con MySQL

Connessione con MySQL Connessione con MySQL Architettura Server-Side Eventuali parametri cookie sessioni Elaborazione SELECT... DATABASE Quando i dati sono molti e la persistenza deve andare altre la sessione o la durata

Dettagli

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet: e JDBC Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino e : estensioni del Java API permettono di scrivere

Dettagli

Laboratorio di Sistemi Fondamenti di JDBC (parte1) Java. Fondamenti di JDBC

Laboratorio di Sistemi Fondamenti di JDBC (parte1) Java. Fondamenti di JDBC Fondamenti di JDBC Concetto di driver Il dialogo fra applicazione e DBMS non è mai gestito direttamente ma passa in genere per un opportuno modulo software chiamato driver che agisce da interfaccia fra

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Creare un portale personalizzato

Creare un portale personalizzato 1 Creare un portale personalizzato Passi da seguire 1) Aprire la pagina: http://www.term-minator.it/modello.html 2) Scaricare modello : 2) Aprire il file modello con blocco note : 1 2 3) Modificare il

Dettagli

Laboratorio di Progettazione Web

Laboratorio di Progettazione Web PHP e MySQL (2) Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR - c.renso@isti.cnr.it Nelle pagine web, quando le tabelle sono molto complesse, può risultare utile suddividere la visualizzazione

Dettagli

Capitolo 5. Soluzione: Soluzione in C:

Capitolo 5. Soluzione: Soluzione in C: Capitolo 5 Esercizio 5.1 Realizzare una procedura in un linguaggio di programmazione di alto livello che tramite SQL Embedded elimina dalla tabella DIPARTIMENTO l'elemento che ha il nome che viene fornito

Dettagli

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Connessione al DB con PHP Anno accademico 2016-2017 Paolo Perlasca Parte di questi lucidi è tratta da una versione precedente di Marco Mesiti, Stefano Valtolina, Daniele Riboni

Dettagli

Obiettivo della lezione

Obiettivo della lezione Obiettivo della lezione Lezione 17 Enterprise JavaBeans (5) Vittorio Scarano Corso di Sistemi Distribuiti (2003-2004) Laurea Specialistica in Informatica Università degli Studi di Salerno Comprendere quanto

Dettagli

PRIMO MODULO. DURATA: 80 ore CONTENUTI

PRIMO MODULO. DURATA: 80 ore CONTENUTI 0 PRIMO MODULO DURATA: 80 ore CONTENUTI 1. Introduzione alla programmazione a. Cosa è la programmazione strutturata b. Strutture dati c. Come si affronta una problematica da risolvere d. Quali sono i passi

Dettagli

DBMS ed Applicazioni Motivazioni

DBMS ed Applicazioni Motivazioni DBMS ed Applicazioni Motivazioni Sin ora abbiamo visto SQL come linguaggio per interrogare DBMS da interfaccia interattiva Nella pratica, un efficace sfruttamento delle potenzialità dei DBMS deriva dalla

Dettagli

Accesso Web a Data Base

Accesso Web a Data Base Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Accesso Web a Data Base Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei -

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori.

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori. Tecnologia delle Basi Dati Analisi del dbms Postgresql. Luigi Cestoni Prima Parte Descrizione del Database Abbiamo realizzato un database costituito da quattro tabelle: 1. dipendente( id,nome,cognome,eta,telefono,idufficio)

Dettagli

Esempio di architettura software

Esempio di architettura software Esempio di architettura software Corso di Principi di Progettazione del Software, a.a. 2012/13 29 novembre 2016 Ing. Roberto Vergallo 1 Esempio di architettura software View (GUI) Action Listener Business

Dettagli

Programmazione server-side: Java Servlet

Programmazione server-side: Java Servlet Programmazione server-side: Java Servlet Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.11 parte II Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Cos

Dettagli

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Spiegazioni esercizio Gestione Tabella con PHP e MySQL Spiegazioni esercizio Gestione Tabella con PHP e MySQL foglio_di_stile.css (foglio di stile esterno) Questo file contiene: 1. la struttura generale delle quattro pagine web dinamiche: index.php, inserisci.php,

Dettagli

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java] Vogliamo realizzare un prototipo di applicativo web che consenta a un gruppo di utenti di autenticarsi. In prima istanza, carichiamo in memoria tutti gli utenti ammessi ad accedere al sistema, in seconda

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

esempio hello world Dott. Doria Mauro

esempio hello world Dott. Doria Mauro Hibernate esempio hello world Dott. Doria Mauro doriamauro@gmail.com Presentiamo un primo esempio che consente di gestire un messaggio di testo. Lo scopo è quello di storare il messaggio hello world sul

Dettagli

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Domande utili alla preparazione dell orale di Informatica all Esame di Stato Domande utili alla preparazione dell orale di Informatica all Esame di Stato 1.Al livello fisico un database si appoggia ai files per contenere i suoi dati? 2.Esistono altri modelli di organizzazione oltre

Dettagli

1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org

1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org 1 Applicazione J2EE sul SAP WAS con SAP NWDS http://desvino.altervista.org Applicazione J2EE sul SAP WAS con SAP NWDS. Il SAP Web Application Server fornisce un framework integrato per lo sviluppo e l

Dettagli

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017 Laboratorio Progettazione Web PHP e MySQL Andrea Marchetti IIT-CNR 2016/2017 Architettura di una applicazione Web Browser Web HTTP Server Web Dati Presentation Application Storage PHP e DataBase Quando

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni IIndice Capitolo 1 Da dove partiamo: pagine web statiche 1 1.1 Principi di base.............................. 1 1.1.1 Il paradigma client-server.................... 1 1.1.2 Ipertesto, multimedia, ipermedia................

Dettagli

JDBC. A. Bechini 2004. Accesso a DataD con Java

JDBC. A. Bechini 2004. Accesso a DataD con Java JDBC Accesso a DataD atabase ase con Java Utilizzo di DB da applicazioni esterne Un DB contiene e gestisce dati, importanti per varie operazioni supportate da applicazioni software Come può un applicazione

Dettagli

Alberi Binario in Java

Alberi Binario in Java Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un

Dettagli

D B M G Il linguaggio HTML

D B M G Il linguaggio HTML Programmazione Web Il linguaggio HTML Il linguaggio HTML Concetti di base Le interfacce utente in HTML I form Le tabelle Il passaggio dei parametri contenuti nei form @2011 Politecnico di Torino 1 Concetti

Dettagli

Struttura del compito d esame ed esempio

Struttura del compito d esame ed esempio Struttura del compito d esame ed esempio 1 Struttura del compito Il compito d esame è tipicamente composto da 2 esercizi Esercizio sulla programmazione client-side (Javascript e Ajax) Esercizio sulla programmazione

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Programmazione Java Avanzata

Programmazione Java Avanzata Programmazione Java Avanzata Accesso ai Dati Ing. Giuseppe D'Aquì Testi Consigliati Eclipse In Action Core J2EE Patterns - DAO [http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html]

Dettagli

Introduzione JDBC interfaccia java.sql driver caricare i driver

Introduzione JDBC interfaccia java.sql driver caricare i driver J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene

Dettagli

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2014/2015

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2014/2015 Laboratorio Progettazione Web PHP e MySQL Andrea Marchetti IIT-CNR 2014/2015 Architettura di una applicazione Web Browser Web HTTP Server Web Dati Presentation Application Storage PHP e DataBase Quando

Dettagli

Laboratorio di sistemi Web Application in Php5 Php

Laboratorio di sistemi Web Application in Php5 Php Applicazioni web con Xampp, Php5 e NetBeans 6.5 (Windows) Vogliamo ora riscrivere a titolo di prova un'applicazione web precedentemente scritta in Java (si legga l'articolo all'indirizzo http://www.mauriziocozzetto.net/pdf/dao_mysql.pdf).

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

Laboratorio di reti II: Gestione di database lato server

Laboratorio di reti II: Gestione di database lato server Laboratorio di reti II: Gestione di database lato server Stefano Brocchi brocchi@dsi.unifi.it 23 marzo, 2009 Stefano Brocchi Laboratorio di reti II: Database 23 marzo, 2009 1 / 32 Uso di database lato

Dettagli

Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione

Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione Il pattern Factory Il pattern FACTORY è un pattern di tipo Creazionale secondo la classificazione della GoF I pattern di tipo creazionali si occupano della costruzione degli oggetti e delle problematiche

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 4 Cos è JDBC 2 JDBC significa Java Database Connectivity Standard definito da Sun MicroSystems per connettere programmi

Dettagli

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi Applicazioni web Parte 6 Java Alberto Ferrari 1 Sommario Introduzione alle API ed esempi Tomcat Server per applicazioni web Alberto Ferrari 2 Alberto Ferrari 1 Java: da applet a servlet In origine Java

Dettagli

JDBC. Dispense per il corso di Ingegneria del Web

JDBC. Dispense per il corso di Ingegneria del Web JDBC Dispense per il corso di Ingegneria del Web Revisione 05/11 Giuseppe Della Penna (giuseppe.dellapenna@di.univaq.it) Dipartimento di Informatica Università degli studi dell'aquila Java Database Connectivity:

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1 Concetti di base Programmazione Web Il linguaggio HTML HTML consente di annotare un testo per contrassegnare le parti che lo compongono Le annotazioni sono realizzate tramite i "tag" Visualizzare documenti

Dettagli

JDBC per l accesso Java a DB. Tito Flagella tito@link.it

JDBC per l accesso Java a DB. Tito Flagella tito@link.it JDBC per l accesso Java a DB Tito Flagella tito@link.it JDBC fornisce una libreria standard per l accesso a database relazionali Non è un acronimo ufficiale ma è comunemente interpretato come Java DataBase

Dettagli

1. (6 punti) Spiegare il significato, in modo dettagliato, del pezzo di codice seguente di una servlet:

1. (6 punti) Spiegare il significato, in modo dettagliato, del pezzo di codice seguente di una servlet: Università degli Studi di Camerino Corso di Laurea in Informatica A.A. 2015/2016 Prova Scritta di Programmazione Web, 21 Febbraio 2017 VIII Appello Docenti: Francesco Tiezzi e Luca Tesei Nome e Cognome:

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Applet anatomia di un applet cenni di html La libreria JDBC per l accesso ai database il package java.sql 213 Applet Un applet è una applicazione Java che ha una forma particolare

Dettagli

Note pratiche sullo sviluppo di servlet (I)

Note pratiche sullo sviluppo di servlet (I) Note pratiche sullo sviluppo di servlet (I) Nel caso in cui sulla macchina locale (PC in laboratorio/pc a casa/portatile) ci sia a disposizione un ambiente Java (con compilatore) e un editor/ambiente di

Dettagli

Implementazione Java di un ADT

Implementazione Java di un ADT Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

revisione dicembre 2010

revisione dicembre 2010 Servizio Prevenzione e Protezione GUIDA ALL INSERIMENTO ONLINE DEGLI ADDETTI E DEI PREPOSTI revisione dicembre 2010 note Accesso all applicativo Cliccare sulla voce Applicativo della sezione Sicurezza

Dettagli

LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST

LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST L'oggetto Request può essere considerato come l'esatto contrario dell'oggetto Response, infatti mentre quest'ultimo invia dati al browser, Request serve a

Dettagli

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO 8- Programmazione di una base di dati attraverso JDBC Introduzione ai differenti approcci - JDBC: Architettura e Programmazione Introduzione Nella pratica gli utenti finali accedono al contenuto di una

Dettagli

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali Docente: Carlo Drioli 31 marzo 2015 Esempio I prova infracorso Esercizio 1 Si consideri un applicazione per la gestione di menu

Dettagli

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_4 V1.7. JSP parte D

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_4 V1.7. JSP parte D Università di Bergamo Facoltà di Ingegneria Applicazioni Internet B Paolo Salvaneschi B6_4 V1.7 JSP parte D Il contenuto del documento è liberamente utilizzabile dagli studenti, per studio personale e

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito

Dettagli

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MYSQL E PHP Per poter interagire con un database in rete mediante uno script php bisogna innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MySQL_connect(nome del host, nome utente,

Dettagli

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014 Laboratorio Progettazione Web PHP e MySQL Andrea Marchetti IIT-CNR 2013/2014 Architettura di una applicazione Web Browser Web HTTP Server Web API Dati Presentation Application Storage PHP e DataBase Quando

Dettagli

Initiative. Ethernet-MPI convertitore e 6180XIO

Initiative. Ethernet-MPI convertitore e 6180XIO OEM Initiative Ethernet-MPI convertitore e 6180XIO MM/MR Ver. 0 22/02/2008 Introduzione La richiesta è di poter collegare un registratore videografico in Ethernet con un PLC Siemens dotato di porta MPI.

Dettagli

Implementazione ADT: Alberi

Implementazione ADT: Alberi Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 10 Architettura Model-View-Controller (MVC) L'architettura MVC può essere applicata anche alla tecnologia PHP secondo diversi approcci. In questa

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

Le JavaServer Pages - Lezione 6 L accesso ai Database

Le JavaServer Pages - Lezione 6 L accesso ai Database Le JavaServer Pages - Lezione 6 L accesso ai Database A cura di Giuseppe De Pietro (depietro_giuseppe@yahoo.it) Contenuti Al giorno d oggi la maggior parte degli applicativi Web, anche semplici, hanno

Dettagli