Accesso Web a Data Base



Documenti analoghi
Introduzione JDBC interfaccia java.sql driver caricare i driver

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

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

JDBC. A. Bechini Accesso a DataD con Java

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

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

Corso di Informatica Modulo T3 B2 - Database in rete

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

Architettura MVC-2: i JavaBeans

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

JDBC versione base. Le classi/interfacce principali di JDBC

Visualizzazione ordini in MyShopDB

Introduzione alla programmazione Http lato server in Java

JDBC di base. Le classi/interfacce principali di JDBC

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

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

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

Java: la libreria delle classi

Esercitazione su JDBC

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Esercitazione 4 JDBC

La tecnologia ASP.NET e i database

Dispensa di database Access

Basi di Dati Esercitazione JDBC. Giugno 2007

19. LA PROGRAMMAZIONE LATO SERVER

Note pratiche sullo sviluppo di servlet (I)

Database e reti. Piero Gallo Pasquale Sirsi

DBMS ed Applicazioni Motivazioni

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Lezione 9. Applicazioni tradizionali

Progetto ittorario Anno scol

Osservazioni. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2005/06-1

Scheda 15 Accedere ai DataBase con JDBC

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at] .

Tener traccia del client

Gestire le sessioni con le Servlet

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

Sicurezza Informatica: Tecniche di SQL INJECTION

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

Al giorno d oggi, i sistemi per la gestione di database

Programmazione server-side: Java Servlet

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query

Java: Compilatore e Interprete

COME CREARE E COLLEGARSI AD UN DATABASE MICROSOFT SQL SERVER O SUN MYSQL

Introduzione ai database relazionali

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Capitolo 13. Interrogare una base di dati

I file WAR. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2004/05-1

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Capitolo 4 Pianificazione e Sviluppo di Web Part

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

PSG Table Builder Manuale Utente. PSG TABLE BUILDER Manuale Utente

Architettura MVC-2 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 /

GRUPPO DOMANDE N. 1. Quesito n. 1 Descrivere sinteticamente le finalità e le modalità d uso dei seguenti comandi UNIX / LINUX: LS, KILL, PS.

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

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

Laboratorio di reti II: Java Server Pages

Programmazione Java Avanzata

LABORATORIO DI INFORMATICA parte 6 -

Installazione e caratteristiche generali 1

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

MUSEO&WEB. un area riservata (OTEBAC) Roma, 15 giugno 2010

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

Servlet e JDBC. Programmazione in Rete e Laboratorio

Progettazione : Design Pattern Creazionali

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

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Laboratorio di Basi di Dati

Architetture Web: un ripasso

DATABASE.

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Laboratorio di reti II: Gestione di database lato server

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

Laboratorio di sistemi Prima Web Application JSP [Java]

MANUALE PORTALE UTENTE IMPRENDITORE

Come trattare il risultato di un comando SQL (relazioni) che

Laboratorio di Basi di Dati e Multimedia

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Sistemi di Elaborazione delle Informazioni (C.I. 15) Access

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Progetto di Basi di Dati e Multimidia Laboratorio Struttura dell applicazione web

Z3 B1 Message Addon Invio Massivo Documenti via e Fax per SAP Business One

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D

Servizio Telematico Paghe

Prova scritta del 13 luglio 2010

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Chat. Connettersi a un server di chat. Modificare le impostazioni di chat. Ricevere impostazioni chat. Chat

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani

Programmazione Java Avanzata Spring - JDBC

Università Politecnica delle Marche. Progetto Didattico

Transcript:

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 - Introduzione al corso di Tecnologie e Applicazioni Web 1

OBIETTIVI Vogliamo che i nostri servizi Web siano in grado di accedere e usare basi di dati contenute sul server. Motivazioni: - siti Web di grandi dimensioni potrebbero dover gestire molti dati, e potrebbero avere necessità di organizzare questi dati in apposite dasi di dati - attraverso i linguaggi di interrogazione delle basi di dati (specificatamente SQL) possiamo essere in grado di produrre dinamicamente delle risposte selezionando opportunamente le cose da visualizzare (si può fare anche con XSL) - sempre di più i sistemi informativi delle aziende tipicamente centrati sulle basi di dati vengono gestiti in modalità SAP (service application provider): l azienda non si preoccupa più di avere i propri server e la propria rete. Viene tutto delegato alle software house che installano e gestiscono i sistemi informativi sui loro server (in modo tale che una azienda non se ne debba più assolutamente preoccupare) e li rendono accessibili all azienda tramite Web. Cosa bisogna sapere fare: - rendere disponibili i database per l accesso da parte dei servizi Web, tramite appositi driver - fare in modo che i servizi possano usare questi driver per accedere alle basi di dati - fare in modo che i servizi sappiano creare dinamicamente delle query SQL per poter accedere, leggere e/o modificare, la base di dati M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 2

COME RENDERE DISPONIBILE IL DATABASE con ODBC Un database non è generalmente accessbile da qualunque programma e applicazione, ma in genere solo dall applicazione che direttamente lo ha creato e lo gestisce (p.e., access o Oracle, etc.). Per renderlo accessibile a altre applicazioni, è necessario predisporre dei driver appositi che permettano l accesso. ODBC è il driver messo a disposizione da Microsoft per accedere ai database. Come installare ODBC per una specifica base di dati: Win 95 Win 98 Pannello di Controllo Origine Dati Win 2000 Win XP Pannello di Controllo Strumenti di Amm. Origine Dati Scegliere il tipo di database che si vuole rendere disponibile (p.e., access, oracle, etc.). Quindi fare aggiungi per aggiungere una nuova origine dati. E quindi specificare: - il nome (o URL) con il quale si vuole rendere accessibile tale database ( nome origine dati ) - eventuali commenti ( descrizione ) - selezionare poi il nome del file che contiene effettivamente il database - è possibile con le opzioni avanzate proteggere l accesso con username e password M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 3

ACCEDERE AL DATABASE (1): da ODBC a JDBC Il programma Java dovrà includere: import java.sql.*; package che contiene le classi attraverso le quali si possono creare e fare delle query sql. Prima di fare query, bisogna connettersi alla base di dati con appositi driver. Attenzione: java usa il driver JDBC per accedere alle basi di dati. Ogni sistema operativo però tende ad usare il suo specifico driver per rendere disponibili le basi di dati. Microsoft usa ODBC. Quindi: è chiaro che bisogna fare in modo di avere un driver che mi faccia la conversione da JDBC a ODBC. Questo driver è definito dalla classe sun.jdbc.odbc.jdbcodbcdriver che non avremo mai bisogno di usare direttamente, ma che il nostro programma userà indirettamente e che quindi bisognerà provvedere a cercare. Class.forName va a caricare una classe e la rende pronta all uso, quindi noi dobbiamo fare: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); che renderà attivo all interno del nostro programma l apposito driver. M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 4

ACCEDERE AL DATABASE (2): Connettersi al DataBase Una volta che il driver jdbc-odbc è attivo, possiamo stabilire la connessione con la base di dati. Per fare questo si usa una funzione static della classe DriverManager che si chiama getconnection. Connection c = DriverManager.getConnection( ) La funzione getconnection accetta tre parametri: una stringa che rappresenta l URL della base di dati, che non è altro che il nome (preceduto dall indicazione dei driver) con il quale la base di dati è stata resa accessibile dal sistema operativo. Due stringhe che rappresentano lo username e la password con i quali si deve accedere a una base di dati eventualmente protetta. Esempio: Connection c = DriverManager.getConnection( jdbc:odbc:people, ugo, 1254 ); Altro esempio: String bdurl = jdbc:odbc:esami_web ; String un = docente ; String pwd = thezambo ; Connection c = DriverManager.getConnection(dburl, un,pwd); M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 5

ACCEDERE AL DATABASE (3): Fare le Query Banale: si prepara la query SQL come una stringa. String query="select "+campo+" FROM nometabella"; Oppure String query="select "+campo+" FROM persone WHERE " + eta + < + eta_minima); Oppure qualsiasi altra query anche complessa. SI sottomette la query attraverso la creazione di un cosiddetto Statement nel database. Statement s = c.createstatement(); ResultSet r = s.executequery(query); Il risultato ritornato dalla executequery è tipo una Enumeration, i cui vari elementi sono le righe della tabella come ritornate dalla query, accessibili via via tramite next. Poi ogni colonna della tabella (corrispondente a un campo con un certo nome) è accessibile tramite getstring(nome_del_campo) e ritorna una stringa con il valore del campo corrispondente. Esempio: while(r.next()) { out.print(r.getstring( matricola )+"<BR>"); out.print(r.getstring( voto )+"<BR>"); M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 6

ESEMPIO COMPLETO Semplicissimo database di nomi, età, e email, creato con access (ricordiamo che un database ha un nome suo, e poi ha una serie di tabella all interno ognuna con il proprio nome ). Qui il nostro database ha una sola tabella di nome persone Rendiamo accessibile il database: M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 7

SCRIVIAMO LA PAGINA WEB PER ACCEDERE AL DATABASE <HTML> <HEAD> <TITLE>Simple Form</TITLE> </HEAD> <BODY> <H1> Esempio di Servlet che accede ad un database</h1> <H2> Selezionare il campo su cui fare la query tra i seguenti:<h2> nome <BR> cognome <BR> email <BR> telefono <BR> <HR/> <form method="post" action="servlet/jdbcservlet"> Campo Query <input type="text" name="campo"/> Eta minima da selezionare <input type="text" name="eta"/> <input type="submit" value="query"/> <BODY> </HTML> M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 8

IL CODICE DELLA SERVLET (1) import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.sql.*; public class JDBCServlet extends HttpServlet { public void service (HttpServletRequest req, HttpServletResponse res) throws IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); String campo=req.getparameter("campo"); String eta=req.getparameter("eta"); String query= "SELECT "+campo +" FROM persone WHERE eta < " + eta; /* prepare the db connection */ String dburl="jdbc:odbc:mieiamici"; // oppure // String dburl context.getinitparametername( DB ); String user="franco"; String password="zambo"; try { /* the following command load the jdbc driver */ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection c = DriverManager.getConnection(dbUrl,user,password); Statement s=c.createstatement(); ResultSet r=s.executequery(query); M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 9

IL CODICE DELLA SERVLET (2) /* Here we start writing the real Servlet code */ out.print("<html>"); out.print("<body>"); out.print("<h1>query sul database nomipersone</h1>"); out.print("<b>i "+campo+" di quelli che hanno meno di +eta+ anni sono: </B><BR>\n"); while(r.next()) { out.print(r.getstring(campo)+"<br>"); out.print("</body>"); out.print("</html>"); s.close(); catch (Exception e) { out.println("<html>"); out.println("<body>"); out.println("<h1>è successo un errore dopo la query sul database db_persone</h1>"); out.println(e.tostring()); out.println("</body>"); out.println("</html>"); M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 10

Accesso a DB Tramite JSP Query.html <html> <body> <h1>form per effettuare una query in un Database</h1> <h2>il database ha una sola tabella "utenti" contraddistinta dai campi: "nome", "cognome", "username", "password"</h2> <hr/> <form action="db.jsp"> Insersci la query: <input type="text" name="query"/> <br/> Insersci il campo da visualizzare: <input type="text" name="display"/> <br/> <br/> <input type="submit" name="query" value="query"/> </form> </body> </head> Db.jsp <html> <head> <%@ page language= "java" %> <jsp:usebean id="bean" scope="session" class="jspbeans.dbbean" /> <% bean.setdburl("jdbc:odbc:provadb"); %> <% bean.connect(); %> <% String query = request.getparameter("query"); %> <% String display = request.getparameter("display"); %> </head> <body> <h1> Risultato della Query </h1> <%= bean.query(query,display) %> </body> </html> M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 11

DBBean.jsp package jspbeans; import java.io.*; import java.util.*; import java.sql.*; public class DBBean { private String dburl; private Connection c; private Statement s; public DBBean() { public void setdburl(string dburl) { this.dburl = dburl; public void connect() { try { /* the following command load the jdbc driver */ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); c = DriverManager.getConnection(dbUrl,null,null); s = c.createstatement(); catch(exception e){e.printstacktrace(); public void disconnect() { try { c.close(); catch(exception e){e.printstacktrace(); public String query(string query, String field) { String result = new String(); try { ResultSet r = s.executequery(query); while(r.next()) result = result + r.getstring(field)+"<br>"; catch(exception e){e.printstacktrace(); return result; public static void main(string[] args) { DBBean bean = new DBBean(); bean.setdburl("jdbc:odbc:provadb"); bean.connect(); String result = bean.query("select * from utenti","nome"); System.out.println(result); M. Mamei - Introduzione al corso di Tecnologie e Applicazioni Web 12