La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

A.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet.

Presentazioni simili


Presentazione sul tema: "A.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet."— Transcript della presentazione:

1 a.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet

2 a.a. 2004/05Tecnologie Web2 Ricordiamoci che… Il Web è basato su unarchitettura client-server Server = processo (programma in esecuzione) che –resta in ascolto (in attesa di richieste) su una macchina server –ad ogni richiesta esegue unazione per gestirla (recuperare una pagina web, eseguire un programma, …) –restituisce al chiamante risultato (pagina richiesta, risultato di esecuzione del programma, …) Client = programma che effettua richieste al server Il protocollo applicativo utilizzato dal Web è HTTP, che è basato su due tipi di azioni –richiesta (request) da client a server –risposta (response) da server a client

3 a.a. 2004/05Tecnologie Web3 La richiesta del client è espressa mediante un URL (identificatore univoco di una risorsa sul Web), può richiedere: La visualizzazione, sul client, di una pagina statica: http://www.di.unito.it/people/goy.html La visualizzazione, sul client, di una pagina dinamica, frutto di unelaborazione precedentemente avvenuta sul server: http://www.di.unito.it/negozio/prezzo.jsp Lesecuzione, sul server, di un programma: http://www.di.unito.it/negozio/calcolaPrezzo In questi ultimi due casi è possibile includere nella richiesta dei dati (parametri) su cui la pagina dinamica o il programma potranno lavorare: http://www.di.unito.it/negozio/prezzo.jsp?prec=100&spesa=25 http://www.di.unito.it/ negozio/calcolaPrezzo?prec=100&spesa=25 HTTP request: URL

4 a.a. 2004/05Tecnologie Web4 HTTP request: metodo GET La richiesta del client può utilizzate due diverse modalità: 1) Il metodo GET il client inserisce i parametri (dati) contenuti nella richiesta HTTP in coda allURL sono visibili nella barra dellindirizzo del browser!!! Per es: http://www.di.unito.it/negozio/prezzo.jsp?prec=100&spesa=25 http://www.di.unito.it/ negozio/ calcolaPrezzo?prec=100&spesa=25 Tipo di informazioni trasmissibile è limitato (molti browser limitano lunghezza di URL+query a 255 caratteri) 2) Il metodo POST i dati (parametri) vengono incapsulati allinterno del messaggio di richiesta (e non in coda allURL) e quindi NON sono visibili allutente Può inviare al server quantità illimitata di dati

5 a.a. 2004/05Tecnologie Web5 Applicazioni web server-side In generale unapplicazione web (server-side) è composta di molte risorse, statiche (es. pagine HTML) o dinamiche (programmi eseguibili) I programmi che appartengono ad unapplicazione web server-side sono programmi come altri ma: li si deve poter invocare attraverso il web server quando il server riceve la richiesta, deve poter identificare ed eseguire il programma richiesto il web server deve poter passare al programma la HTTP request (affinchè il programma la interpreti) quando il programma ha ottenuto il risultato, lo impacchetta e lo invia al web server che lo spedisce al client via HTTP response

6 a.a. 2004/05Tecnologie Web6 Tecnologie server-side: CGI Common Gateway Interface la tecnologia CGI permette ad un web server di invocare un programma esterno passandogli i dati contenuti nella HTTP request il programma invocato processa la HTTP request, esegue il suo lavoro (per es. query a database) e restituisce il risultato al web server che, attraverso la HTTP response, lo invia al client supportata praticamente da tutti i web server programmi CGI possono essere scritti in molti linguaggi diversi, ma il più usato è Perl E una tecnologia vecchia, superata in particolare dalle Java Servlet

7 a.a. 2004/05Tecnologie Web7 Tecnologie server-side: Java Servlet Java Servlet = tecnologia server-side offerta in ambiente Java Una servlet è un programma Java che gestisce HTTP request e restituisce HTTP response estende le funzionalità del web server Le servlet girano nel processo del web server e agiscono come livello intermedio tra: –richieste provenienti da HTTP clients (web browser,...) –database e altre sorgenti informative gestite dal server Le servlet caricate nel processo del server, vivono (restano in esecuzione) finché non vengono esplicitamente scaricate (lesecuzione viene terminata) possono gestire innumerevoli richieste da parte dei client gestiscono ogni HTTP request in un thread separato parallelismo in esecuzione (anche se i programmi e i dati generali sono in copia unica)

8 a.a. 2004/05Tecnologie Web8 Java Servlet: vantaggi Essendo programmi duraturi –permettono a web server di gestire interazioni complesse con iclient (non solo singole risposte a singole richieste, ma anche sequenze di request- response con gestione di stato dellinterazione) –permettono di integrare la logica dellapplicazione in processo di scambio di HTTP request e response Essendo scritte in Java –sono indipendenti dalla piattaforma su cui devono girare (portabilità) –possono sfruttare tutti i vantaggi dati dalla disponibilità delle librerie Java e dalla JVM Sono più efficienti dei CGI (perchè non creano un nuovo processo per ogni richiesta del client come fanno i CGI)

9 a.a. 2004/05Tecnologie Web9 Java Servlet: Web Container - I Per costruire unapplicazione web basata sulluso di servlet è necessario un Web Container (o Servlet Container o Servlet Engine); il Web Container: –carica le servlet nel processo del web server (alla prima invocazione della servlet) –supporta il protocollo HTTP (per gestire il flusso request/response) –gestisce al suo interno più applicazioni, ognuna identificata da un servlet context (nome univoco) contenuti statici (pag. html, immagini) Web Container HTTP Server client (browser) HTTP request HTTP response

10 a.a. 2004/05Tecnologie Web10 Java Servlet: Web Container - II Il Web Container è un Java runtime che ospita ed esegue applicazioni web (crea, inizializza ed invoca servlet e JSP) Tipi di Web Container: –Web Container incluso nel web server: web server scritti in Java includono Web Container Es: Jakarta Tomcat (di Apache) –Web Container in J2EE application server: application server che gestiscono Enterprise Java Beans includono anche web server e web container –Web Container in runtime separato: web servers come Apache e Microsoft IIS necessitano di runtime separato per gestire le servlets, più un plug-in che gestisce la comunicazione tra web server e Web Container

11 a.a. 2004/05Tecnologie Web11 Applicazioni web: ambiente Java Java servlet JSP Java classes, archives Java classes, archives Java classes, archives Deployment descriptor (web.xml) Applicazione web Java servlet JSP Java classes, archives Java classes, archives Java classes, archives Deployment descriptor (web.xml) Applicazione web Web Container (es. Jakarta Tomcat) sweb5 sweb8 servlet context servlet context

12 a.a. 2004/05Tecnologie Web12 Java Servlet: invocazione - I Invocazione di unapplicazione basata su Java Servlet Web Container web server browser Servlet/JSP instances Applicazione web HTTP request 1: il web browser invia una richiesta 2: il web server identifica lapplicazione (via servlet context del Web Container, es. sweb5) e delega la gestione della richiesta 3: il Web Container identifica il tipo di applicazione (JSP, servlet). Se si tratta di una servlet, identifica la servlet instance e delega la richiesta (passa i dati in HTTP request e loggetto HTTP response, in cui si aspetta il risultato) sweb5

13 a.a. 2004/05Tecnologie Web13 Java Servlet: invocazione - II Web Container web server browser Servlet/JSP instances Applicazione web HTTP response 6: il web server invia la risposta al browser 5: il Web Container invia la risposta al web server 4: la servlet: interpreta la HTTP request gestisce la richiesta invia il risultato al Web Container attraverso HTTP response sweb5

14 a.a. 2004/05Tecnologie Web14 Java Servlet: invocazione - III Linvocazione di una servlet può essere fatta da: Form HTML, utilizzando sia POST sia GET Link (URL con parametri): http://www.di.unito.it/ negozio/calcolaPrezzo?prec=100&spesa=25 in questo caso la richiesta utilizza il metodo GET Una servlet può gestire sia richieste inviate tramite POST (grazie al metodo doPost), sia richieste inviate tramite GET (grazie al metodo doGet) NB: I metodi doPost e doGet contengono le istruzioni da eseguire quando la servlet riceve la richiesta: è il programmatore a doverli implementare!

15 a.a. 2004/05Tecnologie Web15 FORM HTML - I

16 a.a. 2004/05Tecnologie Web16 FORM HTML - II... campi del modulo... Attributi del tag FORM : METHOD: specifica il modo in cui vengono inviati i dati: GET = "in chiaro" (in coda all' URL specificato nell'attributo ACTION ) POST = "nascosti" (all'interno dlel'oggetto che viene inviato al server)

17 a.a. 2004/05Tecnologie Web17 FORM HTML - III ACTION: è un URL che contiene il richiamo di unazione, cioè un programma; può essere, per es.: mailto:indirizzo-di-email invia una email allindirizzo specificato, con i dati del modulo una pagina ASP, PHP, JSP (cioè una pagina contenente un programma in grado di riceverle i dati del modulo e di decodificarli) una Servlet Java o uno Script CGI invia i dati del modulo ad un programma che è in grado di riceverli e decodificarli

18 a.a. 2004/05Tecnologie Web18 FORM HTML - IV I pulsanti: viene eseguita lazione specificata in ACTION vengono cancellati tutti i dati già inseriti

19 a.a. 2004/05Tecnologie Web19 FORM HTML - V Campi del modulo (ovvero le modalità per richiedere i dati):

20 a.a. 2004/05Tecnologie Web20 FORM HTML - VI fino a 5 anni da 6 a 11 anni... parametro nascosto che viene inviato al server senza che lutente lo veda

21 a.a. 2004/05Tecnologie Web21 Architettura logica e flusso dati HTTP request (POST) Applicazione Web FORM HTML Come ti chiami? Quanti anni hai? da 18 a 25 maria SERVLET … Print(Ciao, + nome); if (eta.equals(da18a25) { seleziona layout giovane} else if (eta.equals(piu60) { seleziona layout semplice} else { usa layout standard} … stampa il risultato su HTTP response DB … web server Web Container HTTP response

22 a.a. 2004/05Tecnologie Web22 Gestione di interazioni parallele HTTP request (POST) Applicazione Web Browser 1 Come ti chiami? Quanti anni hai? da 18 a 25 maria SERVLET … Print(Ciao, + nome); if (eta.equals(da18a25) { seleziona layout giovane} else if (eta.equals(piu60) { seleziona layout semplice} else { usa layout standard} … stampa il risultato su HTTP response DB … web server Web Container HTTP response Browser 2 Come ti chiami? Quanti anni hai? da 16 a 35 paolo … HTTP request (POST) HTTP response

23 a.a. 2004/05Tecnologie Web23 Sessioni utente e interazioni stateful - I I servizi accessibili da web prevedono generalmente interazioni complesse e il riconoscimento delle azioni eseguite dallutente come ununica sequenza. Es: –apri catalogo (automobili usate), visita pagina di prodotto (berline), visualizza dettagli di auto X (FIAT Marea, Alfa 156, Ford Mondeo, …) –acquista automobile X (carrello spesa) Scegli colore auto, cilindrata, … Scegli optionals Inserisci dati personali Inserisci dati carta di credito … serve un meccanismo per tracciare la sequenza di azioni effettuate dallo stesso browser durante linterazione

24 a.a. 2004/05Tecnologie Web24 Sessioni utente e interazioni stateful - II Sessione utente = "sessione di lavoro" tra l'applicazione e ogni singolo utente (il server, generalmente crea automaticamente un oggetto session per ogni utente che si connette all'applicazione) Se il protocollo utilizzato gestisce le sessioni utente (session tracking), il server riconosce richieste successive di stesso browser come parte di una sola interazione applicazione utente 1 utente 2 utente 3 sessione 1 sessione 2 sessione 3 ecc…

25 a.a. 2004/05Tecnologie Web25 Sessioni utente e interazioni stateful - III Stato = il server ricorda i dati relativi alle precedenti richieste effettuate durante la stessa sessione (può quindi rispondere alle richieste tenendo conto di quanto già fatto). Es: mantenimento carrello spesa NB: la gestione delle sessioni utente è necessaria per gestire stato, ma non sufficiente (per es: HTTP 1.1 supporta sessioni utente, ma non mantiene lo stato di interazione)

26 a.a. 2004/05Tecnologie Web26 Sessioni utente e interazioni stateful - IV Protocollo stateless –ogni richiesta utente è gestita separatamente il server non ha memoria delle precedenti richieste utente –es: HTTP 1.0 Protocollo stateful –permette di gestire risposte a richieste che dipendono dal contenuto e/o dai risultati di una richiesta precedente –gestisce un canale (virtuale) di comunicazione che permette di vedere richieste e risposte multiple come parte della stessa connessione tra client e server –es: FTP, telnet

27 a.a. 2004/05Tecnologie Web27 Tecniche di session tracking - I Basate sullo scambio di un token identificativo (sessionId) tra client (C) e server (S): C invia richiesta HTTP a S S risponde associando token univoco T a risposta C invia ulteriori richieste associando token T, che permette a S di riconoscere C server S client C risposta con token richiesta con token

28 a.a. 2004/05Tecnologie Web28 Tecniche di session tracking - II URL Rewriting –token inserito in coda allURL (come parametro) delle richieste eseguite dal client Hidden form fields –token inserito in campi nascosti delle form Cookies –token scritto in un cookie (file di testo memorizzato sul client e restituito al server ad ogni richiesta HTTP) Sessioni che usano Secure Socket Layer (SSL) –SSL usa il protocollo di scambio di messaggi crittografati HTTPS. Per stabilire connessioni, client e server generano delle session keys (chiavi simmetriche per crittografare e decrittare messaggi) che possono essere usate per identificare client e sessione utente

29 a.a. 2004/05Tecnologie Web29 Session tracking con Servlet Le servlet offrono un meccanismo automatico per session tracking e mantenimento dello stato dellinterazione Linterfaccia javax.servlet.HttpSession incapsula il concetto di sessione utente e il Web Container implementa HttpSession Linterfaccia HttpServletRequest offre il metodo getSession() per accedere alloggetto HttpSession associato alla richiesta utente corrente (HttpServletRequest) NB: Normalmente il session tracking è implementato utilizzando i cookies se il browser ha disabilitato i cookies il Web Container può utilizzare URL rewriting (ma bisogna invocare metodi specifici) NB: le sessioni utente devono scadere (timeout) per evitare di sovraccaricare il server nel caso in cui gli utenti non chiudano esplicitamente la sessione

30 a.a. 2004/05Tecnologie Web30 Mantenimento dello stato con Servlet Loggetto HttpServletRequest può contenere anche degli attributi associati alla sessione utente Si tratta di coppie (il valore può essere un oggetto complesso) Tali attributi sono usati per mantenere informazioni sullo stato della particolare sessione utente HttpServletRequest offre metodi per scrivere e leggere questi attributi –void setAttribute(String attrName, Object attr) : salva lattributo nelloggetto sessione –Object getAttribute(String attrName) : restituisce il valore associato al nome attrName nella sessione utente

31 a.a. 2004/05Tecnologie Web31 Interazione con database: JDBC

32 a.a. 2004/05Tecnologie Web32 Cos'è un database (relazionale)? I dati sono registrazioni della descrizione di una qualsiasi caratteristica della realtà, su un supporto che ne garantisca la conservazione, la comprensibilità e la reperibilità Una base di dati (database) è una collezione di dati organizzati in modo coerente, costruito con funzionalità ben precise, note già in fase di progettazione (esempi: rubrica telefonica personale, anagrafe, archivio di una biblioteca, archivio centrale del ministero delle finanze, segreteria studenti delluniversità, …) Ricordiamoci che… database

33 a.a. 2004/05Tecnologie Web33 Definizione della base di dati (DB relazionale): –quali informazioni –quali relazioni tra le informazioni Vari livelli nella definizione dei dati: Vista 1Vista 2Vista n Livello logico Livello fisico Livello concettuale Ricordiamoci che…

34 a.a. 2004/05Tecnologie Web34 Livello concettuale: Ha l'obiettivo di descrivere, a livello concettuale, la conoscenza sulla realtà che si vuole modellare (linguaggi di rappresentazione della conoscenza) Individuare le entità rilevanti, le loro proprietà (attributi)… … e le relazioni tra entità LIBRO N.invent Anno_ed. TitoloCasa_ed. Collocaz. Ripiano Scaffale scrive autorelibro (1:n) Ricordiamoci che… Autore

35 a.a. 2004/05Tecnologie Web35 Livello logico: Rappresentazione tabellare dei dati N.Inv AutoreTitolo Anno_edCasa_edCollocaz Tabella: LIBRI Ricordiamoci che…

36 a.a. 2004/05Tecnologie Web36 Interazione con un database (relazionale): Manipolazione dei dati: –inserimento di dati –cancellazione di dati –aggiornamento (update) –interrogazione Ogni operazione di accesso alla base di dati viene interpretata, analizzata ed eseguita dal DBMS (DataBase Management System) Ricordiamoci che… database DBMS

37 a.a. 2004/05Tecnologie Web37 Si utilizza un linguaggio appositamente studiato per "parlare" con i database (relazionali): SQL (Structured Query Language) Esempio Produce come risultato una tabella che contiene tutti gli attributi nella clausola SELECT, che soddisfano la condizione nella clausola WHERE nell'es: tutti i libri editi da Feltrinelli AutoreTitolo I.Allende S.Benni D.Voltolini Saltatempo Dieci Afrodita Ricordiamoci che… SELECT Autore, Titolo FROM Libri WHERE Casa_ed=Feltrinelli

38 a.a. 2004/05Tecnologie Web38 Accesso a database relazionali I produttori di RDBMS (Relational DBMS) offrono API (interfacce) per accedere ai dati gestiti dal DBMS Laccesso al database è basato su modello client-server il client accede al database mediante le API definite dai produttori RDBMS diversi hanno API diverse serve uno strumento per generalizzare laccesso, in modo da separare lapplicazione (business logic) dal livello dei dati (in modo che il passaggio ad un database diverso non crei problemi) Un Database Driver è uno strumento che ci permette di comunicare in modo uniforme con diversi RDBMS

39 a.a. 2004/05Tecnologie Web39 ODBC e JDBC ODBC (Open Database Connectivity) driver –creato inizialmente per offrire API standard per accesso SQL a piattaforme Microsoft Windows, è poi stato esteso ad altre piattaforme –offre un accesso uniforme a database relazionali eterogenei (installando lODBC driver specifico per ogni database) –definisce funzioni per accesso diretto ai dati (quindi non poi così standard) JDBC (Java DataBase Connectivity) driver offre uninterfaccia standardizzata tra applicazioni Java e database relazionali

40 a.a. 2004/05Tecnologie Web40 JDBC - I JDBC API (java.sql, incluso in J2SE) supporta lesecuzione di query SQL e lanalisi dei risultati delle query Offre metodi per accedere a RDBMS SQL-compliant, astraendo da: –dettagli implementativi del database (MS Access? Oracle? …?) e dei suoi API specifici –dettagli di comunicazione con i database specifici Permette ad una singola applicazione di connettersi a più database diversi, anche eterogenei (attraverso database driver diversi) JDBC basato su –linguaggio di interrogazione SQL –interfaccia di comunicazione X/Open CLI

41 a.a. 2004/05Tecnologie Web41 JDBC - II X/Open CLI (Call Level Interface) interfaccia (API) standard per laccesso a database relazionali, definita originariamente per ODBC indipendente da piattaforma e da database basata su idea di –includere query SQL in unapplicazione scritta in un linguaggio ad alto livello (per es. Java) –pre-processare le query per generare chiamate di funzioni native del database

42 a.a. 2004/05Tecnologie Web42 JDBC - III JDBC è stato sviluppato partendo da specifiche di driver ODBC esistenti e di CLI, per identificare caratteristiche comuni e offrire interfaccia di comunicazione –compatibile con tutti i driver –facilmente implementabile in Java Risultato: API per laccesso a database che possono essere: –implementate su driver ODBC esistenti (prime versioni) –direttamente integrate nel database, senza passare attraverso ODBC (oggi molto diffuso) Tipi di connessioni JDBC: JDBC-ODBC Bridge Part Java, part native driver Intermediate Database Access Server Pure Java Drivers

43 a.a. 2004/05Tecnologie Web43 JDBC-ODBC Bridge Java Application Data Source JDBC API JDBC-ODBC Bridge ODBC API ODBC Layer JDBC driver : traduce le chiamate JDBC in chiamate ODBC invia chiamate ODBC al database (usando librerie ODBC) delega al database lesecuzione delle chiamate poco efficiente per livelli multipli e traduzioni intermedie il client che gestisce lapplicazione deve installare JDBC-ODBC Bridge API e ODBC driver Processo 1 Processo 2

44 a.a. 2004/05Tecnologie Web44 Part Java, part native driver Java Application Data Source JDBC API JDBC Driver Vendor specific API JDBC driver traduce le chiamate JDBC in chiamate specifiche per il database lI database processa le richieste e invia i risultati attraverso API specifiche (che inviano i risultati al JDBC driver) JDBC driver traduce risultati in JDBC standard e invia ad applicazione + efficiente (- livelli di traduzione) il client deve installare driver e API nativi del DB

45 a.a. 2004/05Tecnologie Web45 Intermediate database access server (net-protocol all-Java driver) Java Application Data Source JDBC API JDBC Driver Driver Server intermedio connette più client Java a più DB server: JDBC Driver Server fa da gateway verso i server dei database lapplicazione invia la richiesta JDBC via JDBC Driver al Driver Server Driver Server completa la richiesta attraverso il native driver JDBC Driver Server nasconde i dettagli delle connessioni ai database server il protocollo di comunicazione col Driver Server è specifico, ma il Driver Server può usare protocolli diversi per comunicare con DB diversi JDBC Driver Server Native Driver

46 a.a. 2004/05Tecnologie Web46 Pure Java Drivers Java Application Data Source JDBC API JDBC Driver Il JDBC Driver converte le chiamate JDBC in chiamate in rete dirette utilizzando protocolli di rete specifici del database (socket) + efficiente semplice da utilizzare perchè non richiede librerie o software speciali I principali produttori di database offrono JDBC Driver puri per accedere ai propri DB Una lista di JDBC driver: http://industry.java.sun.com/products/jdbc/drivers/

47 a.a. 2004/05Tecnologie Web47 Architettura di JDBC - I Application Driver Manager JDBC Specific Driver Connection Statement ResultSet 1) lapplicazione installa il Driver Mgr e istanzia uno o più JDBC drivers (specifici per DB) 3) Tabelle risultato contenute in oggetti ResultSet interrogabili JDBC Specific Driver Connection Statement ResultSet 2) lapplicazione chiede un oggetto Connection al Driver Mgr e lo usa per comunicare con il DB (via query SQL)

48 a.a. 2004/05Tecnologie Web48 Architettura di JDBC - II Driver Manager (java.sql.DriverManager): classe che permette di installare i driver per laccesso ai database JDBC Specific Driver (java.sql.Driver): interfaccia –Venditori di DBMS implementano Driver (definendo I metodi di accesso al loro database) –Il Driver JDBC traduce le chiamate JDBC in invocazioni basate su API specifiche del database Software delle applicazioni indipendente dal particolare database (perché DriverManager e applicazione usano le interfacce, non le implementazioni) Connection (java.sql.Connection): interfaccia che permette di inviare query SQL (interfaccia java.sql.Statement) e di leggere i risultati (interfaccia java.sql.ResultSet); i produttori di database implementano linterfaccia

49 a.a. 2004/05Tecnologie Web49 JDBC: tipi di dati JDBC offre un insieme di tipi di dati corrispondenti ai tipi di dati SQL e Java (classe java.sql.Types). Per es:


Scaricare ppt "A.a. 2004/05Tecnologie Web1 Applicazioni Web server-side: Java Servlet."

Presentazioni simili


Annunci Google