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



Documenti analoghi
Architetture Web: un ripasso

Componenti Web: client-side e server-side

Implementazione di MVC. Gabriele Pellegrinetti

Protocolli e architetture per WIS

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 /

Programmazione server-side: Java Servlet

sito web sito Internet

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

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

Siti interattivi e dinamici. in poche pagine

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

19. LA PROGRAMMAZIONE LATO SERVER

Corso di Informatica Modulo T3 B1 Programmazione web

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

SWIM v2 Design Document

L architettura MVC (Model- View-Controller) Introduzione

Come funziona internet

Corso di PHP. Prerequisiti. 1 - Introduzione

Laboratorio di Basi di Dati

Introduzione al linguaggio Java: Servlet e JSP

Client - Server. Client Web: il BROWSER

Flavio De Paoli

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Port Community System del Porto di Ravenna CONFIGURAZIONE

Architetture Web a tre livelli: CGI, SSI, ISAPI e codice mobile Architetture a 3 livelli (1)

APPENDICE A Servlet e Java Server Page

Tipi fondamentali di documenti web

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

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

b) Dinamicità delle pagine e interattività d) Separazione del contenuto dalla forma di visualizzazione

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

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

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

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

Introduzione alla programmazione Http lato server in Java

Sito web parrocchiale: STRUMENTI E PROGRAMMI

Bibliografia: Utenti e sessioni

Gestire le sessioni con le Servlet

Corso basi di dati Introduzione alle ASP

Tecnologie di Sviluppo per il Web

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

Lezione III: Oggetti ASP e interazione tramite form HTML

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Introduzione all elaborazione di database nel Web

Concetti base. Impianti Informatici. Web application

Architetture e applicazioni web

Progetto ittorario Anno scol

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

Architetture Web I Server Web e gli Standard della Comunicazione

Base di dati e sistemi informativi

Architetture Software

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MetaMAG METAMAG 1 IL PRODOTTO

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

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

Il Protocollo HTTP e la programmazione di estensioni Web

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Server-side Programming: Java servlets Parte II

Università degli Studi di Napoli Parthenope Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Generale

InitZero s.r.l. Via P. Calamandrei, Arezzo

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Lifephone. Introduzione. Database. Sito

Esercizi di JavaScript

Dispensa di Informatica I.1

AJAX e altre applicazioni di Javascript. Luca Fabbri

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

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

Tener traccia del client

Una metodologia di progettazione di applicazioni web centrate sui dati

Approccio stratificato

MagiCum S.r.l. Progetto Inno-School

Corso di PHP. Prerequisiti. 1 - Introduzione

HTML il linguaggio per creare le pagine per il web

INTRODUZIONE AI PRINCIPI DELLO SVILUPPO DI APPLICAZIONI WEB INTERATTIVE

SISTEMI E RETI. Crittografia. Sistemi distribuiti e configurazione architetturale delle applicazioni WEB.

Manuale Tecnico Indicazioni tecniche sulle modifiche apportate al Sito WebTelemaco Pratiche

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

Lo scenario: la definizione di Internet

MANUALE UTENTE Fiscali Free

Protocollo di tracciamento e valutazione degli studenti dei corsi di italiano ICoNLingua A.A

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

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

Lezione II: Web server e ambiente di lavoro

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Strutture di accesso ai dati

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Il Web Server e il protocollo HTTP

J2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser.

Gestione della memoria centrale


Progettazione Web Applicazioni client-server

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

ESERCITAZIONE Semplice creazione di un sito Internet

Collegamento remoto vending machines by do-dots

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

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

Corso di Informatica

Transcript:

EVOLUZIONE DEL WEB: PAGINE STATICHE vs PAGINE DINAMICHE Il Web è nato a supporto dei fisici, perché potessero scambiare tra loro le informazioni inerenti le loro sperimentazioni. L HTTP è nato inizialmente come linguaggio di formattazione di pagine statiche: quindi era caratterizzato come stateless e connectionless, in quanto non vi era alcun modo di associare il singolo utente con la connessione attiva. Non esiste una gestione individuale delle informazioni. Tutti i client ricevono le stesse informazioni dal web-server. SCENARIO 1 PAGINE STATICHE. (1)url client request; (2) http request; (3) search page; (4) send page; (5) http response Con l introduzione dell e-commerce, è stato necessario introdurre nuovi componenti, e il concetto di pagine HTTP statiche si è evoluto in pagine dinamiche, in quanto generate dinamicamente alla richiesta del client in base allo scenario delle informazioni relative a quella determinata sessione. SCENARIO 2 PAGINE DINAMICHE (1) url client request; (2) http request; (3-4) search page; (5-6)send page; (7) http response. E stato introdotto un ENGINE LATO SERVER, che introduce della business logic e gestisce lo stato, attraverso l uso di COOKIES (file di dimensione limitata (4Kb), memorizzati sul client, che tengono traccia delle informazioni relative alla sessione corrente). Vi è inoltre uno SCRIPT ENGINE, ovvero un applicazione del Web Server per interpretare gli script non compresi da questo (es. PHP, ASP). Gli strumenti adottati inizialmente erano le CGI (Common Gateway Interface), delle applicazioni stand-alone per delle elaborazioni monolitiche, ma risultanti poco flessibili (in quanto il risultato prodotto dalle CGI veniva stampato come MIME). Un altro passo ulteriore è rappresentato dai linguaggi like Java Script oppure ECMA-SCRIPT (l ECMA rappresenta un organizzazione di standardizzazione dei linguaggi), i quali interagiscono con il lato client e con cui le pagine vengono realizzate secondo il modello DOM.

AJAX Dal 2006 JavaScript si è evoluto in un pool di linguaggi denominato AJAX - Asincronous Java Script and XML (altro pool di linguaggi è il LAMP: Linux Apache MySQL PHP), il quale ha permesso il REMOTE SCRIPTING, quindi l invio di richieste asincrone al server, aumentando la dinamicità e diminuendo il numero di richieste verso il server. AJAX è stato introdotto da Jesse Garrett il 18/02/05 come titolo di un post di un suo blog. Si tratta di un gruppo di tecnologie; si ha un utilizzo asincrono di JavaScript, che attraverso l interfacciamento con XML, permette a un client di richiedere informazioni lato server in modo veloce. L asincronicità si ha in quanto i dati extra sono richiesti al server e caricati in background senza interferire con il comportamento della pagina esistente. AJAX è costituito da: 1) HTML e CSS (Cascading Style Sheets) per markup e stile (nota: in merito ai CSS, visitare il link http://www.csszengarden.com, che rappresenta le ultime tendenze del Web Design) 2) DOM (Document Object Model), manipolato attraverso un linguaggio ECMA-script per mostrare le informazioni ed interagirvi 3) l oggetto XMLHttpRequest, per l interscambio asincrono dei dati tra il browser e il web server 4) XML, come formato di scambio dei dati, ma si possono utilizzare anche HTML, JSON, EBML. Funzionamento di AJAX

SERVLETS & JSP Una servlet è un componente Java eseguibile da un WebServer Java-enabled; è una tecnologia Java di back-end adottata per la realizzazione del middle tier, che consente l accesso da parte dei client ai servizi; inoltre implementa le regole di business, ed essendo un oggetto compilato, risulta più veloce e sicuro. Vantaggio fondamentale delle servlets è che tali oggetti Java sono richiamati dalle pagine Web e producono come proprio output una pagina HTML. Nel tempo, le servlets sono state sostituite dalle pagine JSP (Java Server Pages), che sono sempre oggetti JAVA. Queste hanno un vantaggio importante: le pagine jsp sono compilate la prima volta a cui si fa accesso. Quando viene richiamata successivamente si esegue un accesso alla servlet che fornirà la pagina già compliata. Di seguito lo schema del processo di compilazione di una pagina JSP. Nota: nella creazione di una Web Page concorrono più figure professionali, tra cui il web designer, l information architect e il programmatore. Principali usi delle servlets 1) Creazione pagine web dinamiche; 2) Forward delle richieste ad altri server e gestione delle connessioni; implementazione di meccanismi di load balancing (componente hardware o software che serve a smistare le richieste a seconda del carico e tener traccia delle risposte dei server: questo implica un affidabilità elevata); 3) Proxy per le applets: una applet eseguita da un browser può, per ragioni di sicurezza, stabilire connessioni solo verso il web server da cui è stata scaricata. Se l applet richiede l accesso a un servizio o a un DBMS disponibile su una macchina diversa dal web server, la servlet può realizzare la connessione per l applet e svolgere quindi il ruolo di proxy; 4) Personalizzazione/realizzazione di nuovi protocolli, basati sempre sul meccanismo di domanda/risposta. Le servlets vengono eseguite all interno dei processi del WebServer oppure sono contenute in un Servlet Engine/Container (in genere un Application Server dedicato). Possiamo distinguere le servlets in temporanee (funzionamento analogo alle CGI) e permanenti (lanciate con il Servlet Container e sempre attive).

JSP Le JSP (Java Server Page) rappresentano una tecnologia multipiattaforma che affianca le servlet Java e che assume un ruolo importante nello scenario dello sviluppo di applicazioni Web. JSP è una soluzione embed, ossia una pagina JSP è costituita da markup html frammentato da sezioni in cui appare codice java. Una pagina jsp può essere invocata in due modi: - la richiesta può venire effettuata direttamente ad una pagina JSP, che grazie alle risorse messe a disposizione lato server, è in grado di elaborare i dati di ingresso per ottenere e restituire l'output voluto; - la richiesta può essere filtrata da una servlet che, dopo l'elaborazione dei dati, incapsula adeguatamente i risultati e richiama la pagina JSP, che produrrà l'output. Una servlet è una particolare applicazione che estende le funzionalità dell'application server. Tipicamente una servlet è rappresentata da una classe che implementa l'interfaccia Servlet o HttpServlet, che implementa funzionalità specifiche del protocollo http. Le servlet possono anche essere utilizzate per costruire pagine HMTL da inviare direttamente al client. A differenza di uno script CGI, le servlet vengono caricate una sola volta, al momento della prima richiesta, e rimangono residenti in memoria, pronte per servire le richieste fino a quando non vengono chiuse, con ovvi vantaggi in fatto di prestazioni (solo la prima richiesta risulta un po' più lenta nel caricamento, ma le successive vengono evase molto velocemente). Le servlet sono fondamentalmente degli oggetti java; il ciclo di vita di una servlet si concentra su tre metodi fondamentali: - init(): in questo metodo che la servlet instanzia tutte le risorse che utilizzerà poi per gestire le richieste, - service(): gestisce le richieste effettuate dal client; - destroy(): questo metodo segna la chiusura della servlet. Vediamo un po di codice, iniziando con il classico messaggio "Ciao Mondo!" da stampare a video: <!-- prova.jsp --> <html> <body> <% out.println("ciao Mondo!"); %> </body> </html> Le sezioni racchiuse tra <% e %> sono quelle che contengono le istruzioni in linguaggio Java. La prima volta che si effettua la richiesta del file, quest'ultimo viene compilato, creando una servlet, che sarà archiviata in memoria (per servire le richieste successive); solo dopo questi passaggi viene elaborata la pagina HTML che viene mandata al browser. Ad ogni richiesta successiva alla prima il server controlla se sulla pagina.jsp è stata effettuata qualche modifica, in caso negativo richiama la servlet già compilato, altrimenti si occupa di eseguire nuovamente la compilazione e memorizzare la nuova servlet. Gli script in JSP sono vere e proprie porzioni di codice inserite all'interno di pagine HTML che possono rappresentare: dichiarazioni, espressioni o commenti. La sintassi per le espressioni è la seguente: Mentre per quanto riguarda le dichiarazioni: I commenti invece si è soliti racchiuderli tra i tag: <%= espressione %> <%! dichiarazione %>

<%!--questo è un commento --%> Altri componenti di una pagina jsp sono le direttive, che specificano le caratteristiche globali della pagina. <%@ page language="java" import="java.sql.*" %> Le azioni sono invece oggetti finalizzati ad un migliore incapsulamento del codice come i javabean o gli Ejb. I primi offrono una soluzione al problema della manutenzione del codice HTML delle applicazioni eccessivamente complesse. Sono quindi dei componenti software contenenti una classe Java, che possono venire inclusi in una pagina JSP, permettendo un ottimo incapsulamento del codice, che sarà facilmente riutilizzabile. Osserviamo un esempio più completo in cui vengono utilizzati il metodo Get e il metodo Post. Ricordiamo le differenze tra i due: il primo passa i dati come parametri concatenandoli all'interno dell'indirizzo della pagina che li riceverà, mentre il secondo risulta più sicuro (soprattutto in presenza di dati delicati come password o codici segreti) mantenendo intatto l'indirizzo della pagina di ricezione. // Si importano inizialmente le classi che verranno di seguito utilizzate: import java.io.*; //operazioni i/o import javax.servlet.*; //classe servlet import javax.servlet.http.*; //questa libreria consente di utilizzare il metodo // post oltre al get //viene istanziata la servlet public class HelloWorldServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { //preparo il tipo di risposta response.setcontenttype("text/html"); PrintWriter out= response.getwriter(); out.println("<html><body BGCOLOR=\"#7F7FFF\"><H1 ALIGN=CENTER>HELLO WORLD</H1></BODY></HTML>"); out.close(); } public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { doget(request,response); //recupera i parametri } }

Pattern MVC Il Model View Controller è un pattern architetturale molto diffuso nello sviluppo di interfacce grafiche di sistemi software object-oriented. Il pattern è basato sulla separazione dei compiti fra i componenti software che interpretano tre ruoli principali: - il model contiene i dati e fornisce i metodi per accedervi; - il view visualizza i dati contenuti nel model; - il controller riceve i comandi dell'utente (in genere attraverso il view) e li attua modificando lo stato degli altri due componenti. Questo schema, fra l'altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata "logica di business"), a carico del model, e l'interfaccia utente, a carico del view e del controller. Vediamo in dettaglio i due principali tipi di pattern: Model 1: la richiesta del browser viene inviata alla pagina jsp responsabile della sua esecuzione. Esiste una separazione tra la presentazione e la generazione dinamica dei contenuti dato che l accesso al database avviene attraverso i JavaBean (accediamo ai sistemi legacy piuttosto che DBMS). Tuttavia l architettura è adeguata solo per semplici applicazioni e non è praticabile per implementazioni complesse e ricche di codice. Model 2: C è in questo caso una maggiore separazione degli strati quindi sarà più agevole modulare e controllare i componenti durante lo sviluppo. La componente di presentazione view è realizzata dalla pagina jsp. Il controller viene implementato attraverso servlet che riceve tutte le richieste http ed effuttua il dispatching. Lo stato dell applicazione viene gestito dal Model implementato da JavaBean. Il vantaggio del modello consiste nel fatto che non esiste una logica applicativa all interno della componente di presentazione. La view è realizzata come pagina jsp che deve generare contenuti accedendo ai componenti ed inserendo contenuti dinamici all interno di template statici o griglie editoriali.

Gestione delle sessioni e dei cookies Una sessione rappresenta un singolo uso coerente di un sistema web e solitamente richiede accesso a diverse pagine. La realizzazione di sessioni è complessa a causa della natura connectionless del protocollo http. Un meccanismo per la gestione dello stato del client è rappresentato dai cookie, un insieme di dati memorizzati sul client la cui dimensione massima raggiunge i 4 kbyte. Ha il compito di memorizzare informazioni rilevanti quali il nome, valore, scadenza, percorso, richiesta di connessione sicura. Queste informazioni vengono memorizzate sul client sotto forma di file di solo testo, in modo tale da consentire il riconoscimento di un particolare utente dell'applicazione. Infatti a una successiva richiesta il browser invia nella request http il valore SessionId e altri dati memorizzati in precedenza. Si tiene traccia quindi delle informazioni di cui si ha bisogno e si ottiene una migliore navigazione in applicazioni più complesse. Come viene gestito lo stato I cookie costituiscono un meccanismo base con cui è possibile realizzare sessioni web. Il mantenimento dello stato di una sessione può essere realizzato in quattro modi diversi: - Tramite inserimento di tutte le variabili di stato in un cookie; - Tramite inserimento di una chiave univoca in un cookie; - Includendo tutti i valori delle variabili di stato come parametri nella http request; - Includendo nella http request il parametro che riguarda l IdSession. Esiste una soluzione alternativa ai cookie, ovvero vengono utilizzati dei parametri nascosti e inseriti nelle form inviate dall utente, usando sia il metodo get che post, al server nelle richieste successive. Per eventuali correzioni, aggiunte e modifiche scrivere agli autori: Pasquale Piscopo: p.piscopo@libero.it Andrea Secco: andandry@inwind.it