Programmazione Java Avanzata



Documenti analoghi
Bibliografia: Utenti e sessioni

Introduzione JDBC interfaccia java.sql driver caricare i driver

19. LA PROGRAMMAZIONE LATO SERVER

JDBC. A. Bechini Accesso a DataD con Java

Programmazione Java Avanzata Spring - JDBC

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Lezione 9. Applicazioni tradizionali

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Il Protocollo HTTP e la programmazione di estensioni Web

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

Protocolli e architetture per WIS

Progettazione Web Applicazioni client-server

Reti di Calcolatori. Il Livello delle Applicazioni

Lezione 1 Introduzione

JDBC versione base. Le classi/interfacce principali di JDBC

Architettura MVC-2: i JavaBeans

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

Scheda 15 Accedere ai DataBase con JDBC

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

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

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

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

Siti web centrati sui dati (Data-centric web applications)

Organizzazione degli archivi

SWIM v2 Design Document

Introduzione alle applicazioni di rete

Concetti base. Impianti Informatici. Web application

Applicazioni web centrati sui dati (Data-centric web applications)

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Collegamento remoto vending machines by do-dots

JDBC di base. Le classi/interfacce principali di JDBC

Lezione n 1! Introduzione"

Il Web Server e il protocollo HTTP

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Esercizi di JavaScript

IRSplit. Istruzioni d uso 07/10-01 PC

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

Client - Server. Client Web: il BROWSER

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

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

PROVA FINALE Ingegneria del software

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

Sistemi centralizzati e distribuiti

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

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Esercitazione 4 JDBC

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 /

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Stampe in rete Implementazione corretta

Capitolo 4 Pianificazione e Sviluppo di Web Part

Reti di Telecomunicazione Lezione 7

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A Esercitazione 08 DAO e Hibernate

Aspetti applicativi e tecnologia

SMS API. Documentazione Tecnica YouSMS HTTP API. YouSMS Evet Limited

Strutturazione logica dei dati: i file

Progetto di Applicazioni Software

Corso di Informatica Modulo T3 B2 - Database in rete

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

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

Internet e posta elettronica. A cura di Massimiliano Buschi

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Specifiche Tecnico-Funzionali

Access. P a r t e p r i m a

Introduzione all elaborazione di database nel Web

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

Java: la libreria delle classi

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

Corso di Informatica Modulo T3 B1 Programmazione web

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Framework di Middleware. per Architetture Enterprise

Database e reti. Piero Gallo Pasquale Sirsi

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Lezione III: Oggetti ASP e interazione tramite form HTML

Implementazione di MVC. Gabriele Pellegrinetti

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

La sicurezza nel Web

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

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

Progettaz. e sviluppo Data Base

Manuale d'uso del Connection Manager

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

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

Introduzione alla Progettazione per Componenti

DBMS ed Applicazioni Motivazioni

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Introduzione al mondo della persistenza. Dott. Doria Mauro

Utilizzo dei Cookie Cosa sono i cookie? A cosa servono i cookie? cookie tecnici cookie, detti analitici cookie di profilazione

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

appunti delle lezioni Architetture client/server: applicazioni client

Il Web-Service SDMX dell ISTAT

Utilizzo dei Cookie Cosa sono i cookie? A cosa servono i cookie? cookie tecnici cookie, detti analitici cookie di profilazione

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

Realizzazione di una chat su protocollo HTTP

URI. Introduzione. Pag. 1

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Transcript:

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] JDBC API Documentation [http://download.oracle.com/javase/6/docs/technotes/guides/jdbc/]

Accesso ai dati Ogni applicazione ha bisogno di un sottosistema che si occupi di salvare le informazioni Per motivi di integrità e di gestione, le informazioni non possono stare tutte in RAM In genere si utilizzano dei meccanismi che rendono trasparente allo sviluppatore il modo con cui lo stato interno degli oggetti viene salvato Si parla quindi di Persistenza degli oggetti e di Persistence Layer

Accesso ai dati Le modalità di storage, però, variano in modo ampio Database Relazionali Database Non-relazionali (document-based / NoSQL) Database Object-Oriented Flat Files Servizi Vari (LDAP) Inoltre l'implementazione dei singoli accessi può avere le sue complessità

Accesso ai dati Ogni API infatti può essere implementata in modi diversi e avere modalità di accesso differenti Inoltre i dati potrebbero non essere presenti fisicamente sulla macchina Per questo nasce la necessità di usare API universali che astraggano questa complessità

CRUD Ogni sistema di persistenza deve fornire almeno quattro funzionalità: Create Read Update Delete

JDBC Java DataBase Connectivity È una API che definisce l'accesso ad un database Fornisce metodi per effettuare query ed aggiornare i dati JDBC è orientato ai database relazionali Le classi JDBC sono contenute nel package java.sql and javax.sql

JDBC JDBC è una API universale per i Relational DBMS Il linguaggio di interrogazione è SQL...ma come ben sappiamo spesso ogni produttore di DBMS aggiunge le sue estensioni ad SQL, rendendolo incompatibile

JDBC JDBC si compone di due parti: API: l'interfaccia con cui lo sviluppatore accede alle funzionalità Driver: in genere scritto dal produttore del DBMS; lo sviluppatore difficilmente conoscerà il suo funzionamento

JDBC

JDBC Classi fondamentali: DriverManager Connection Statement PreparedStatement ResultSet

JDBC: DriverManager DriverManager si occupa di fornire la connessione più adatta ad un DBMS La connessione, infatti, viene creata specificando una stringa detta URL DriverManager astrae la gestione del singolo driver

JDBC: DriverManager Ogni JDBC Driver, alla prima inizializzazione, si registra presso DriverManager Chiamando getconnection(), DriverManager cerca tra tutti i driver registrati quello che soddisfa la url specificata Url JDBC: jdbc:<driver>:<host_url> jdbc:mysql://localhost:3306/mydb jdbc:microsoft:sqlserver://localhost;databasename=my db;user=youruser;password=yourpwd

JDBC: Connection Connection gestisce una connessione al database Permette di creare due tipi di statement: Statement: normale query, da eseguire una volta PreparedStatement: query parametrizzata È importante chiudere sempre la connessione (con il metodo close() ), perché altrimenti il Garbage Collector non può liberare le risorse

JDBC: Statement In JDBC, uno Statement è un oggetto che permette di inviare una dichiarazione SQL al database Possiede un metodo executequery(string) che restituisce un ResultSet (array di risultati) stmt.executequery( SELECT * FROM Studenti );

JDBC: PreparedStatement I PreparedStatement, invece, hanno dei parametri PreparedStatement ps = conn.preparestatement( "SELECT * FROM STUDENTI WHERE id =?" ); ps.setint(1, 123456); ps.executequery();

DAO Data Access Object (pattern) È un oggetto che fornisce un'interfaccia astratta ad un database Fa da tramite tra l'applicazione e il Persistence Layer Disaccoppia, quindi, l'applicazione dai dettagli implementativi come il tipo di DBMS, lo schema, ecc.

DAO

DAO

DAO: vantaggi Separazione rigorosa tra due parti importanti di ogni applicazione, che in genere evolvono in parallelo Moduli maggiormente riusabili Integrazione semplice con framework che forniscono questa funzionalità

Programmazione Java Avanzata Web Development

HTTP Protocollo alla base del Web Richiesta/Risposta Testuale Stateless: ogni richiesta è indipendente da tutte le altre Pochi metodi di richiesta (GET, POST, altri poco usati) per incanalare tutte le funzionalità Completamente in chiaro

HTTP Request/Response

HTTP Un server, generalmente, si occupa di fornire, a richiesta, il contenuto di file I browser sono in grado di interpretare i file testuali scritti in linguaggio HTML Nella maggior parte dei casi, quindi, la risposta del server sarà contenuto scritto secondo HTML

HTTP Request Se l'utente scrive la URL: http://www.unirc.it/index.html Il browser invierà al server la seguente stringa: GET /index.html HTTP/1.1 HOST www.unirc.it User-Agent: Mozilla/5.0

HTTP Request Se si possono richiedere solo nomi di file, come si può strutturare una applicazione webbased?

HTTP Request Si può scrivere la URL in modo che contenga dei parametri: Http://www.unirc.it/index.html?var1=9&var2=1 oltre a chiedere la pagina index.html passiamo al server le variabili var1 (pari a 9) e var2 (pari ad 1) Si può usare il metodo POST che permette di inviare parametri nello stesso formato ma non immersi nella URL

HTTP Response Il server sta in ascolto sulla porta TCP 80 Quando riceve la richiesta, cerca il file con quel nome e ne invia il contenuto al client Fin qui c'è poco di applicativo!

Web Server I Web Server al giorno d'oggi non sono più semplici fornitori di HTML Moduli di estensione, script e server ad-hoc intercettano le richieste e permettono di manipolare l'input tramite linguaggi di programmazione L'output deve essere sempre HTML, ma i file possono essere generati al volo e non più essere fisicamente presenti sul server

Protocollo Stateless La mancanza di salvataggio dello stato interno è uno dei più grandi pregi e difetti dell'http Pro: Vedi XKCD: [http://www.xkcd.com/869/] Velocità di esecuzione Basse richieste di memoria Contro: Ogni applicazione ha bisogno di sapere cosa ha fatto l'utente in precedenza

Protocollo Stateless: soluzioni Una prima soluzione è stato l'uso dei cookie Piccoli file di testo, salvati sul client, che contengono variabili e i loro valori I cookie vengono inviati al server ad ogni request Esempio: se l'utente fornisce username e password, possono essere salvate in un cookie (insieme ad altri dati); ad ogni richiesta i cookie vengono inviati al server e quindi il server legge lo stato dai cookie

Cookie: Problematiche File di testo non crittografati Chiunque può leggerli sul pc o durante l'invio, quindi non si possono salvare dati sensibili File di testo scrivibili da chiunque Lato server, non possiamo fidarci di quello che abbiamo scritto precedentemente nei cookie Insicuri Un sito B, sfruttando vulnerabilità, potrebbe avere accesso ai cookie del sito A

Variabili di sessione Per risolvere il problema dei cookie si usano le variabili di sessione, lato server Variabili salvate sul server Si assegna ad ogni utente un hash (detto Session ID) Se l'utente fornisce l'hash al server, il server lo identifica e può consultare i dati che lo riguardano

Variabili di sessione vs. Cookie Rimane il problema: come fa il server ad identificare un client come rappresentante di un utente? Se le variabili sono lato server non c'è modo di saperlo Si scrive il Session ID in un cookie Il Session ID è un hash, è molto difficile indovinarlo Anche se il Session ID viene intercettato, ha una durata limitata nel tempo (una sessione o anche meno)

Perché il Web? Con tutti questi problemi da risolvere la domanda sorge spontanea Perché il Web è ovunque Quasi 2 miliardi di persone al mondo usano Internet Perché il Web è semplice HTML non è un linguaggio di programmazione, ma definisce solo come le informazioni vengono presentate Perché il Web è standard Esistono organismi come il W3C che si preoccupano di creare degli standard in modo che ognuno abbia la stessa esperienza sul Web, indipendentemente dal browser, dal sistema operativo e dal dispositivo

Java e HTTP Esistono librerie e classi per gestire le richieste/risposte HTTP direttamente in Java Ma gestire le richieste a questo livello molto basso: È dispendioso (è un problema abbastanza indipendente e non ha senso gestirlo volta per volta) È soggetto ad errori Sottrae tempo lavorativo che potrebbe essere dedicato alla business logic

Servlet Le Servlet sono classi Java che rispondono ad HTTP Request Definiscono delle modalità di risposta (ad esempio, in caso di GET o POST) e poi gestiscono in modo automatico il resto Per esempio, viene mantenuto lo stato nelle variabili di sessione senza che lo sviluppatore debba preoccuparsi

Servlet Una Servlet restituisce, in genere, HTML Anche se può restituire XML o altro Una Servlet viene inizializzata dal server, e, a questo punto, gestisce ogni request in un thread a parte Le Servlet sono definite nella libreria di JavaEE