EVOLUZIONI DEL CALCOLO WEB. DIREZIONI CORRENTI di EVOLUZIONE Sicuramente il campo applicativo più ampio di dimensioni è il sistema Web stesso

Documenti analoghi
Introduzione alla programmazione Http lato server in Java

Servlet API. Programmazione in Ambienti Distribuiti A.A

Corso di Applicazioni Telematiche

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

Tener traccia del client

Architetture Web: un ripasso

Programmazione server-side: Java Servlet

SERVLET & JSP DISPENSE

Database & WWW. Basi di dati Architetture e linee di evoluzione P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone

Note pratiche sullo sviluppo di servlet (I)

Programmazione per il Web Riassunto della lezione del 02/03/2015

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


Introduzione a Java Servlet Technology

Laboratorio di reti II: Servlet

Lezione di Basi di Dati 1 18/11/ TECNOLOGIE PER IL WEB: CGI - AJAX SERVLETS & JSP

Laboratorio di Programmazione di Rete

Tecnologie di Sviluppo per il Web

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

Architetture Web parte 2

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

Applicazione distribuita basata su Web accessibile via Web per mezzo di una Intranet o attraverso Internet

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

APPENDICE A Servlet e Java Server Page

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

Laboratorio di Progettazione Web Introduzione

Tipi fondamentali di documenti web

Tecnologie di Sviluppo per il Web

Java Servlet & Java Server Pages (una semplice introduzione) SAPIENZA Università di Roma Corso di Progetto di Applicazioni Software

Lezione 6. Siti, Utenti e Sessioni

Programmazione per il Web Riassunto della lezione del 29/02/2016

Modulo o Form in Html

Capitolo 7. Sviluppi futuri. 7.1 Generazione automatica di pagine WML

Servlet. Nicola Gessa

Server-side Programming: Java servlets Parte II

Mantenimento dello stato

Architetture Web I Server Web e gli Standard della Comunicazione

Gestire le sessioni con le Servlet

Servlet. L architettura Java J2EE

JAVA SERVLET: I filtri

Introduzione al linguaggio Java: Servlet e JSP

Sessioni Applicative in Http. Tito Flagella

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Architetture Web I Server Web e gli Standard della Comunicazione

Java Servlet. Davide Taibi.

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

Servlet. Modelli per Applicazioni Web. HTTP Server. HTTP Client.

Tomcat struttura delle directory

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di dati

Svantaggi delle servlet

Tito Flagella - Il protocollo HTTP

Flavio De Paoli

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Programmazione Java Avanzata. MVC Model, View,, Controller. Ing. Gianluca Caminiti

Architetture per le applicazioni web-based. Mario Cannataro

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

Contenuti dinamici. Tecnologie per la generazione di contenuti dinamici. Livelli logici di un servizio Web-based. Contenuti dinamici (2) based

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

SERVLET & JSP DISPENSE

Il Protocollo HTTP e la programmazione di estensioni Web

Le tecnologie software Internet

Le tecnologie software Internet

Un contatore di accessi

PRIMO MODULO. DURATA: 80 ore CONTENUTI

D B M G Il linguaggio HTML

@2011 Politecnico di Torino 1

Web & basi di dati. Basi di dati & Web. Problema. Pregi e difetti di basi di dati e Web. Architettura generale a livelli. Una gerarchia di soluzioni

Progetto di reti di Calcolatori e Sistemi Informatici

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

Architettura MVC-2 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Verso l architettura MVC-2

Laboratorio di sistemi Prima Web Application JSP [Java]

Applicazioni Web. Applicazione Web

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

INFORMATICA DISTRIBUITA. lez 5 World Wide Web (cont)

Introduzione. Java HTTP. G. Prencipe

Multithreading in Java I parte. Lorenzo Gallucci

Soluzione 1: controller per la pagina di dettaglio delle categorie

Architettura MVC-2. Alberto Belussi. Anno accademico 2006/2007

2011 Politecnico di Torino 1

Laboratorio di Basi di Dati

Parte 6 JSON, Web Storage API, funzioni JavaScript e user script

Laboratorio di reti II: Java Server Pages

Tecnologie per la generazione di contenuti dinamici

Il Software programmabili programma algoritmo

Java Server Pages. Corso di Applicazioni Telematiche. A.A Lezione n.18 Prof. Roberto Canonico

24 - Possibili approfondimenti

Componenti Web: client-side e server-side

Corso di Reti di Calcolatori L-A

Corso basi di dati Introduzione alle ASP

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

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

Javascript e CSS nelle pagine WEB

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

Come funziona internet

Applicazioni web. Parte 2 JSP. Michele Tomaiuolo tomamic@ce.unipr.it

Sockets in Java. Lorenzo Gallucci

Architetture Applicative Altri Esempi

Applicazioni Web. Flavio De Paoli

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Transcript:

DIREZIONI CORRENTI di EVOLUZIONE Sicuramente il campo applicativo più ampio di dimensioni è il sistema Web stesso Le sfide sono: utilizzo al meglio dei sistemi Web partendo dalla computazione locale per una visione coordinata uso di tutte le risorse disponibili in rete per migliorare i servizi offerti creazione di un unico sistema di calcolo globale e accessibile Molte aree applicative di interesse accesso sicuro a dati via Web e-commerce & e-market Web computing EVOLUZIONI DEL CALCOLO WEB Browser tradizionali e server web Sistemi con stato Accesso a risorse del server attraverso la interazione con il sistema locale al server Si arriva a vedere il sistema Web come una infrastruttura per ottenere servizi (con Qualità e Costo negoziabile) Modelli e Applicazioni in RdC LS - Web Computing - 1 Modelli e Applicazioni in RdC LS - Web Computing - 2

PROBLEMI WEB I limiti più sentiti sono: - limiti alle operazioni e alle opzioni - mancanza di stato nel protocollo - mancanza di sicurezza Web server e le evoluzioni del protocollo tendono a fare permanere la connessione per consentire di usare il canale per trasferimenti multipli Server Web (Apache) canali che vengono mantenuti per una serie di trasferimenti di informazioni coordinate Si bilancia il costo del canale con una sequenza di operazioni sullo stesso i browser tendono a memorizzare localmente una serie di attributi che forniscono automaticamente ai server da cui li hanno ottenuti per simulare lo stato della interazione Un dominio mantiene una storia delle visite precedenti dalla parte del cliente dalla parte del server STATO cookies un cliente può memorizzare (con scadenza) attributi (stato) da usare per successive interazioni cookies anche per specificare preferenze utente spesso uno stesso server ha molti cookies per pagina che vengono ripresentati solo al servitore corretto formato nome = valore mantenuti sul disco permanente del cliente cookies con scadenza e anche cifrati log attività un server può tenere (con scadenza) la storia delle interazioni da usare successivamente si possono memorizzare molti eventi Pagina richiesta, Host remoto, Tipo del Browser, Pagina Riferita, Data e Tempo Necessità di applicazioni di esplorazione dei dati Modelli e Applicazioni in RdC LS - Web Computing - 3 Modelli e Applicazioni in RdC LS - Web Computing - 4

WEB COMPUTING Il primo passo è la possibilità di superare i vincoli del protocollo HTTP e delle interazioni consentendo di integrare i diversi componenti e di ottenere nuove forme di accesso CGI: problemi, limiti e costi Ad ogni richiesta, viene attivato un processo che specifica la CGI (overhead della generazione) Tempo di attesa per eventuali altre richieste contemporanee (o problemi di mutua esclusione) Se si vogliono variare le suddivisioni tra le due parti interagenti Elaborazione sul client via applet Elaborazione sul server via CGI Primi passi evolutivi FAST CGI prevedono un processo già attivo per ogni servizio CGI specificato Applet scaricate da una richiesta dal server CGI per accesso alle risorse del server Automatismi nella invocazione Trasparenza per l'utilizzatore Sono state proposte API per funzioni standard ISAPI Microsoft, NISAPI Netscape Specifiche dei servizi tipicamente compilate Modelli e Applicazioni in RdC LS - Web Computing - 5 Modelli e Applicazioni in RdC LS - Web Computing - 6

Uso di linguaggi script Il linguaggio HTML è interpretato Allo stesso modo, possiamo pensare a linguaggi script intrinsecamente portabili (interpretati) sia sul client Visual basic Jscript (piccole elaborazioni grafiche locali) Sia sul server Javascript, Perl, PHP, Spesso le parti di script sono integrate nelle pagine HTML e vengono trattate da un processore comandi (engine) che produce in uscita HTML Active Server Pages Definite dalle Microsoft per mescolare HTML e componenti script Java Server Pages come collante per unire codice HTML componenti riusabili (Enterprise JavaBeans) applicazioni remote (servlet) codice Java script basati su linguaggio Java JSP 1. Parte della pagina HTML contiene specifiche in Java tra tag <% %> 2. Il codice Java passato alla macchina virtuale integrata nel server per produrre una servlet 3. Si compila on the fly il codice Java e si attiva la servlet (verifica che non sia cambiata dopo la compilazione precedente) 4. Si produce la pagina HTML risultato HTTP Request: pagina.asp invio a ASP.dll engine ASP HTTP Response: HTML codice HTML non portabili e supportate da Microsoft IIS Internet Information Server Modelli e Applicazioni in RdC LS - Web Computing - 7 Modelli e Applicazioni in RdC LS - Web Computing - 8

WEB Computing Supporto per lavorare tramite Web Il WEB Server è un veicolo per mettere insieme sistemi e componenti diversi Java servlet Estensioni di attività in esecuzione sul server e integrabili facilmente con il server (via JVM) Le servlet sono componenti di codice Java residenti sul Web server se invocate producono attività nella JVM eseguendo come processi leggeri Server Web Server Server Extension Richiesta Risposta HTTP Servlet Engine JSP Engine i costi di attivazione sono molto limitati non usciamo dall'ambiente del server possiamo gestire facilmente mutua esclusione o parallelismo Java Servlet API specification v2.2 (1999) Modelli e Applicazioni in RdC LS - Web Computing - 9 Modelli e Applicazioni in RdC LS - Web Computing - 10

Servlet Le servlet si basano sul concetto di automatizzazione del supporto alla attivazione e alla esecuzione Le servlet vengono gestite e sono inserite in un container o engine È responsabilità del container il dispatching delle servlet provvedendo il corretto passaggio dei parametri e la raccolta dei risultati Servlet La operazione fondamentale per una servlet è il servizio (service) che rappresenta la operazione attuata dalla servlet Due tipi di servlet, generiche e HHTP Si consideri il contenitore che fornisce una serie di funzioni di supporto per le invocazioni in formato evoluto (inizializzazione, distruzione) Il container è responsabile della: istanziazione e caricamento di una servlet esecuzione delle operazioni delle servlet fase di scaricamento finale Per le servlet che trattano http Le servlet Non hanno limitazioni alle funzioni che si possono richiedere tutta la visibilità di Java azioni sul file system, accessi a database, ecc. Estrema portabilità Supporto sui più comuni Web server Modelli e Applicazioni in RdC LS - Web Computing - 11 Modelli e Applicazioni in RdC LS - Web Computing - 12

Ciclo di vita delle Servlet Le servlet consentono di prevedere tre operazioni fondamentali, correlate alla gestione (prologo ed epilogo) init(), destroy() e servizio service() Oggetti per servlet Una servlet è una istanza di una classe che estende (eredita da) javax.servlet.genericservlet javax.servlet.http.httpservlet le classi devono implementare la interfaccia javax.servlet.servletinterface devono avere i metodi detti sopra init() service() destroy() in tre fasi: 1. creazione ed inizializzazione della servlet 2. gestione di uno o più servizi richiesti dai client 3. distruzione della servlet e deallocazione della memoria Si usano oggetti per gestire: HTTP Richieste (e ottenere parametri) HTTP Risposte (e fornire risultati) e basate su equivalenti del protocollo HTTP La service si manifesta con metodi di doget(); dopost(); doput(); dodelete(); con due parametri (in e out) HttpServletRequest HttpServletResponse Sessioni HTTP Sessioni come sequenze di richieste HTTP dallo stesso cliente le sessioni sono mantenute Modelli e Applicazioni in RdC LS - Web Computing - 13 Modelli e Applicazioni in RdC LS - Web Computing - 14

ESEMPIO DI SERVLET Questa servlet produce solo output html public class SimpleServlet extends HttpServlet { /** * Handle the HTTP GET method by building a simple web page. */ public void doget ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; String titolo = "Output da Servlet "; // set content type and // other response header fields first response.setcontenttype("text/html"); // then write the data of the response out = response.getwriter(); out.println("<html><head><title>"); out.println(titolo); out.println("</title></head><body>"); out.println("<h1>" + titolo + "</h1>"); out.println("<p> from Servlet</p>"); out.println("</body></html>"); out.close(); SERVLET - ANCORA Questa servlet ottiene anche informazioni dall input public class BookServlet extends HttpServlet { public void doget ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {... // scrivi header content-type response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); // scrivi response out.println("<html>" + "<head><title> BookDescription </title></head>" +...); // ottieni l identificatore del libro String bookid = request.getparameter("bookid"); if (bookid!= null) { // scrivi informazioni sul libro... out.println("</body></html>"); out.close();... Modelli e Applicazioni in RdC LS - Web Computing - 15 Modelli e Applicazioni in RdC LS - Web Computing - 16

SERVLET MULTITHREADED Possibilità di avere più attività concorrenti per una stessa servlet (permesse dal container) Se mutua esclusione blocchi synchronized con eccessivo overhead per la riattivazione di tutti i thread per ogni rilascio In genere, lavorano in concorrenza Possibilità di accessi contemporanei alle risorse SERVLET MULTITHREADED Si può prevedere di avere un pool di istanze delle servlet che sono state pre-create e sono pronte per essere richieste Una di queste viene attribuita ad ogni possibile richiesta appena è libera e in caso non ce ne siano di disponibili? Se esecuzioni parallele La servlet, dopo la inizializzazione, può servire richieste contemporaneamente ANCHE SERVLET SEQUENZIALI public class ReceiptServlet extends HttpServlet implements SingleThreadModel {... Modelli e Applicazioni in RdC LS - Web Computing - 17 Modelli e Applicazioni in RdC LS - Web Computing - 18

SUPPORTI ALLO SVILUPPO FUNZIONI DI APPOGGIO Sono disponibili tutta una serie di funzioni di supporto e di appoggio per consentire uno sviluppo aiutato e parzialmente automatico FUNZIONI DI UTILITÀ Si basano sullo schema richiesta/risposta e sulla visibilità attraverso queste di ogni possibile informazione ServletRequest/ HttpServletRequest getinputstream (), getprotocol (), getremoteaddress(), getheader (), getmethod (), getquerystring() getremoteuser (), getsession (), ServletResponse/ HttpServletResponse getoutputstream (), setcontenttype (), getwriter(), sendredirect (), ENGINE Integrati con i diversi Web server possiamo avere molti motori in grado di consentire la esecuzione delle applicazioni necessarie I motori o engine sono spesso componenti che si possono aggiungere come moduli ad un web server stand-alone unico JVM come strumento plug-in inserito in tempi successivi come attivazione (DCOM) In-process engine plugin apre JVM con invocazione nativa Out-of-process engine plugin comunica con strumenti di comunicazione (socket) con JVM Modelli e Applicazioni in RdC LS - Web Computing - 19 Modelli e Applicazioni in RdC LS - Web Computing - 20

Sessioni e servizi con stato Overhead Le sessioni sono mantenute per un intervallo di tempo definito Dopo un certo intervallo di inattività, una sessione viene invalidata automaticamente dal container Session-tracking: tecniche tradizionali Cookie Un cookie contiene un insieme di coppie chiave=valore, generato dal web server e inviato al client con la risposta e il cliente lo fornisce per ogni richiesta Hidden Form Field session-tracking anonimo (non riferito ad alcun utente in particolare) utilizzano i campi HIDDEN previsti dal linguaggio HTML User Authorization si limitano gli accessi a risorse ai soli utenti in possesso di username e password URL Rewriting ogni URL utilizzato dall utente può venire dinamicamente modificato o riscritto per permettergli di contenere informazioni aggiuntive Sessioni con servlet la tecnologia servlet si integra con queste tecniche per sfruttare i metodi delle API Servlet ad esempio getparametervalues() getpathinfo() getremoteuser() getcookies()) oltre ad un supporto built-in per il servizio con stato Servlet Session API: l interfaccia HttpSession Esempio: Creazione di una sessione per una richiesta req /* Ottengo un riferimento all oggetto HttpSession corrente se esiste, o ne creo uno nuovo nel metodo getsession() un parametro true richiede una sessione come descritto sopra */ HttpSession sessione = req.getsession(true); Modelli e Applicazioni in RdC LS - Web Computing - 21 Modelli e Applicazioni in RdC LS - Web Computing - 22

SESSIONE Per memorizzare e riottenere coppie nome/valore public class CatalogSlet extends HttpServlet { public void doget ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // trova la sessione e il carrello HttpSession session request.getsession(true); ShoppingCart cart= (ShoppingCart)session. getattribute("examples.bookstore.cart"); // se non c e carrello, crealo if (cart == null) { cart = new ShoppingCart(); session.putattribute ("examples.bookstore.cart", cart);... Stato mantenuto fino alla invalidazione // azzera il carrello // chiudendo la sessione session.invalidate();... Modelli e Applicazioni in RdC LS - Web Computing - 23