Server-side Programming: Java servlets Parte II



Documenti analoghi
Programmazione server-side: Java Servlet

Il Protocollo HTTP e la programmazione di estensioni Web

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

Protocolli applicativi: FTP

Programmazione dei socket con TCP #2

Servlet API. Programmazione in Ambienti Distribuiti A.A

Introduzione alla programmazione Http lato server in Java

19. LA PROGRAMMAZIONE LATO SERVER

Laboratorio di Basi di Dati

Corso basi di dati Installazione e gestione di PWS

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

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

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

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

Architetture Web: un ripasso

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 /

Componenti Web: client-side e server-side

Note pratiche sullo sviluppo di servlet (I)

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

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

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

MANUALE UTENTE Fiscali Free

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

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

Introduzione alle applicazioni di rete

3 ServletContext. Marco Tessarotto Programmazione dei Web Server Anno Accademico

PORTALE CLIENTI Manuale utente

Panoramica: che cosa è necessario

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

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

Application Server per sviluppare applicazioni Java Enterprise

Guida alla registrazione on-line di un DataLogger

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

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

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

Come funziona internet

Registratori di Cassa

Tener traccia del client

Guida Compilazione Piani di Studio on-line

Introduzione all elaborazione di database nel Web

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

Il Web Server e il protocollo HTTP

ESERCITAZIONE Semplice creazione di un sito Internet

Il web server Apache Lezione n. 3. Introduzione

2015 PERIODO D IMPOSTA

Guida al sistema. Dott. Enea Belloni

Ingegneria del Software. Presentazione del pattern Proxy

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

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

DOCFINDERWEB SERVICE E CLIENT

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Gestione Risorse Umane Web

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

L architettura MVC (Model- View-Controller) Introduzione

Tecnologie di Sviluppo per il Web

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

Inizializzazione degli Host. BOOTP e DHCP

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

MANUALE PARCELLA FACILE PLUS INDICE

View Mobile User s Guide

SWIM v2 Design Document

Studio Legale. Guida operativa

Manuale Utente Albo Pretorio GA

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

Situazione Attuale. Le persone svolgono molte operazioni ripetitive ed occupano il proprio computer per le elaborazioni..

Reti di Telecomunicazione Lezione 6

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

Manuale di Aggiornamento BOLLETTINO. Rel H4. DATALOG Soluzioni Integrate a 32 Bit

Sistema per scambi/cessioni di Gas al Punto di Scambio Virtuale

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Capitolo 4 Pianificazione e Sviluppo di Web Part

UML Component and Deployment diagram

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

1. Il Client Skype for Business

Java Web Services. Uso di Eclipse e Apache Axis

Client - Server. Client Web: il BROWSER

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

Mon Ami 3000 MACommerce La soluzione per il commercio elettronico totalmente integrata con Mon Ami 3000

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Con.Te Gestione Console Telematici

FATTURAZIONE ELETTRONICA

Protocolli e architetture per WIS

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Manuale di configurazione del client di posta Microsoft Outlook COME LEGGERE LA CASELLA PEC

Sistemi Informativi I Caso di studio con applicazione di UML

PROGETTO WEB SERVICES DOGANE SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

sito web sito Internet

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

NOME 0 PROVIDER DOMINIO istruzione.it

Capitolo Silberschatz

Transcript:

Corso di Laurea Specialistica in Ingegneria Informatica Corso di Laurea Specialistica in Ingegneria delle Telecomunicazioni Corso di Reti di Applicazioni Telematiche a.a. 2009-2010 Server-side Programming: Java servlets Parte II Simon Pietro Romano spromano@unina.it

Agenda Servlet: Concetti introduttivi Ciclo di vita delle servlet; servlet request, servlet response, servlet config, servlet context Learn by Example Esempi di servlet generiche Configurazione delle web application Introspezione della richiesta HttpServlet: HttpServletRequest, HttpServletResponse Learn by Example Un esempio di servlet HTTP Introspezione della richiesta HTTP Parte II

Applicazione Web (web app) Una raccolta di: servlet Java Server Page (JSP) documenti HTML immagini template altre risorse web Concepita per permettere un deployment portabile su qualunque server web che supporti le servlet

Web apps: motivazioni Garantire la portabilità delle applicazioni basate sul web, grazie a specifici accordi su: Localizzazione dei file dell applicazione sul server Formato dei file di configurazione del server Archivi war Web Application Archive: Un archivio contenente tutti i file di un applicazione web Costruito mediante l utility di compressione jar (Java ARchive) Memorizzato in una specifica cartella del web server

Archivi war in Tomcat Tutti i file.war sono contenuti nella directory webapps del server Tomcat

Contenuto di un archivio war L archivio evidenziato nella slide precedente (visualizzato mediante Winrar )

La directory WEB-INF Una directory speciale: I file al suo interno non vengono inviati direttamente al client, dato che contengono: Classi java Informazioni di configurazione per la web app La cartella WEB-INF/classes contiene: i file di classe per le servlet della web app Le classi di supporto La cartella WEB-INF/lib contiene le classi memorizzate, per comodità, in archivi jar I caricatori di classi del server cercano automaticamente nelle suddette directory per caricare le classi invocate

Il descrittore di deployment Il file web.xml nella directory WEB-INF contiene informazioni di configurazione relative alla web app nella quale risiede: Registrazione delle servlet Mapping delle URL Tipi MIME Caratteristiche avanzate: Vincoli di protezione a livello di pagina Comportamento delle servlet in ambiente distribuito

Il file web.xml Nome simbolico dato alla servlet Classe della servlet

Invocazione della servlet pippozzo La servlet è stata invocata tramite il nome simbolico prescelto!

Mapping di servlet Consente di impostare pattern di URL che richiamano una determinata servlet registrata nel container Utile per: Nascondere l uso di servlet da parte di un sito web Sostituire in maniera indolore una pagina preesistente, corrispondente ad una determinata URL

Un esempio di mapping Qualsiasi richiesta della risorsa http://localhost:8080/at-servletsamples/ciao.html sarà gestita dalla servlet il cui nome simbolico è pippozzo

Invocazione della pagina ciao.html L invocazione della servlet è mascherata dalla pagina statica ciao.html

Regole di mapping Mapping esplicito: Tipo esempio precedente: Utile per sostituire una singola pagina esistente Mapping con prefisso di percorso: Es: /prefisso/* : Gestisce tutte le richieste che iniziano con il prefisso specificato Mapping di estensione: Es: *.jsp, *.do : Gestisce tutte le richieste che terminano con una particolare estensione Mapping predefinito: / : Specifica la servlet predefinita per la web app: Da utilizzare nel caso non si verifichi nessun altra corrispondenza Identico al mapping con prefisso: /*

Esempi di mapping Tutte le richieste aventi AT-Samples come prefisso devono essere gestite dalla servlet avente nome simbolico pippozzo Tutte le richieste aventi comestai come estensione devono essere gestite dalla servlet avente nome simbolico pippozzo

Effetti del mapping (1/2) Qualsiasi richiesta avente AT-Samples come prefisso viene servita dalla servlet avente nome simbolico pippozzo Mod ulo

Effetti del mapping (2/2) Qualsiasi richiesta avente comestai come estensione viene Qualsiasi richiesta avente comestai come estensione viene servita dalla servlet avente nome simbolico pippozzo

La comunicazione tra servlet e container All attivazione di una servlet, il container: Passa alla servlet un oggetto, chiamato ServletConfig,contenente informazioni necessarie per una corretta inizializzazione ServletConfig consente di accedere ad un ulteriore oggetto, chiamato ServletContext, che viene utilizzato dalla servlet per gestire eventuali successive comunicazioni con il container: Determinare il tipo MIME di un file; Inoltrare le richieste (dispatching); Scrivere informazioni in un file di logging; Ecc NB: Esiste un context per ogni web application e per ogni Java Virtual Machine!

L interfaccia ServletConfig E implementata dalla classe GenericServlet: In tal modo, è possibile gestire le informazioni di configurazione in maniera semplice ed immediata

Un occhio alla documentazione

Inizializzazione: l oggetto ServletConfig Quando la servlet viene attivata dal container: Viene invocato il metodo init(), il quale ha, come parametro, l oggetto ServletConfig E compito della servlet salvare tale oggetto come propria variabile di istanza La classe GenericServlet effettua tale operazione nell implementazione del metodo init()

Esempio di inizializzazione La servlet è dotata di una variabile di istanza, di tipo ServletConfig Nel metodo init(), tale variabile è settata al valore passato dal container

Informazioni di contesto: un esempio

Esecuzione della servlet NB: Non compare alcun parametro di inizializzazione, né per la servlet, né per il contesto

Passaggio dei parametri di inizializzazione in Tomcat Si può utilizzare il descrittore di deployment web.xml: Per il context: <context-param> <param-name> nome_del_parametro </param-name> <param-value> valore_del_parametro </param-value> <description> descrizione_del_parametro </description> </context-param> Per le servlet: <init-param> <param-name> nome_del_parametro </param-name> <param-value> valore_del_parametro <description> descrizione_del_parametro </description> </param-value> </init-param>

Un esempio

Esecuzione della servlet NB: In tal caso, i parametri di inizializzazione del contesto e della servlet vengono stampati nella risposta

Introspezione della request L oggetto ServletRequest mette a disposizione tutta una serie di metodi per reperire informazioni sulla richiesta effettuata dal client: Protocollo; Nome del server; Porto del server; Indirizzo dell host client; Nome dell host client;

Un esempio Un frammento di codice che effettua introspezione della richiesta NB: Si provi ad aggiungere tale frammento al codice della precedente servlet

Esecuzione della servlet Risultato dell introspezione Mod ulo

HttpServlet Molto spesso, le servlet utilizzano il protocollo HTTP: Il package javax.servlet.http è stato concepito proprio per fornire un ulteriore supporto agli sviluppatori di questo tipo di servlet Tale package semplifica la gestione dei principali messaggi HTTP: GET POST HEAD TRACE

Il metodo HTTP GET Il metodo HTTP GET è utilizzato per ricevere informazioni da un web server, sotto forma di: File: Testo, html, ecc. Output proveniente da un particolare dispositivo presente sul server: Es: telecamera, ecc. Output proveniente da un particolare programma in esecuzione sul server: Una servlet, uno script CGI, ecc.

HTTP GET: passaggio dei parametri Un esempio: http://localhost:8080/servlet/miaservlet?parametro1=valore1&parametro2=valore2 L URL in questa richiesta GET invoca la servlet MiaServlet e contiene due parametri, chiamati, rispettivamente, parametro1 e parametro2: Ogni parametro è costituito da una coppia nome/valore, secondo il formato: Nome=valore I parametri seguono il nome della servlet e sono preceduti da un punto interrogativo ('?') Ogni parametro è separato dai precedenti tramite un ampersand ('&').

HTTP GET: limitazioni La maggior parte dei server Web limita la quantità massima di dati che possono essere scambiati all interno di una URL (solitamente il limite è pari a qualche centinaio di byte ) Nel caso in cui si presenti la necessità di Nel caso in cui si presenti la necessità di passare molti dati al server all interno della richiesta, bisogna ricorrere al metodo HTTP POST

HTTP GET: particolarità E importante notare che ci si aspetta che l implementazione del metodo GET da parte di qualsiasi server sia: Sicura (safe): Vale a dire, priva di effetti collaterali (side effects) Idempotente: Cioè, capace di produrre il medesimo output in seguito ad invocazioni successive

Il metodo HTTP POST Con il metodo POST, tutti i parametri di input per il server web sono passati all interno di un input stream: Non esiste più, dunque, la limitazione sulla dimensione massima delle informazioni scambiate tra client e server I parametri si trovano all interno della richiesta, subito dopo l header A differenza del metodo GET, il metodo POST non è concepito per essere né sicuro, né idempotente: Sono ammesse modifiche ai dati Non è richiesto il requisito di ripetibilità delle transazioni tra client e server

Il metodo HTTP HEAD E molto simile al metodo GET La richiesta è identica, eccezion fatta per la parola chiave HEAD al posto di GET Nella risposta, il server restituisce solo le informazioni relative all header HEAD è spesso utilizzato per controllare: La data di ultima modifica di un documento presente sul server: utile per gestire il caching La dimensione di un documento prima di scaricarlo dal server: Per consentire al browser di mostrare, successivamente, una barra relativa allo stato di avanzamento della procedura Il tipo di server: Per consentire al client di customizzare le richieste inviate ad un particolare server Web Il tipo di documento richiesto: Per consentire al client di verificare se per esso sia disponibile il necessario supporto

Le classi di supporto per HTTP Il package javax.servlet.http semplifica notevolmente la scrittura di servlet HTTP: La classe astratta HttpServlet eredita tutte le caratteristiche della classe GenericServlet ed include funzionalità specifiche del protocollo HTTP: L implementazione del metodo service() si occupa di gestire in maniera opportuna il dispatching (cioè la consegna) dei messaggi HTTP ad uno dei metodi speciali disponibili per tale protocollo Per tale motivo, non è necessario (anzi, è sconsigliato!) reimplementare il metodo service()

I metodi speciali per HTTP doget() Per gestire richieste di tipo GET dohead() Per gestire richieste di tipo HEAD dodelete() Permette ad un client di eliminare un documento da un Web server dooptions() Restituisce informazioni relative ai metodi supportati dal server dopost() Per gestire richieste di tipo POST doput() Permette ad un client di salvare un documento su un Web server (simile al trasferimento di file mediante FTP ) dotrace() Utilizzato per il debugging

HttpServlet: gestione delle richieste Web server Sottoclasse HttpServlet richiesta GET risposta richiesta POST risposta richiesta TRACE risposta service() doget() dopost().. dotrace()

Utilizzo delle classi di supporto Quando si usano le classi di supporto per HTTP, generalmente occorre creare una nuova servlet che estende HttpServlet e sovrascrivere : o il metodo doget() o il metodo dopost() o entrambi. I metodi di elaborazione dei messaggi HTTP ricevono in ingresso due parametri: Un oggetto HttpServletRequest: Contenente numerosi metodi di ausilio nell analisi della richiesta Un oggetto HttpServletResponse: Contenente numerosi metodi di ausilio nella preparazione della risposta

Introspezione della richiesta HTTP Utilizzando l oggetto HttpServletRequest è possibile accedere in maniera semplice ed efficace ai campi dell header HTTP:

Esecuzione della servlet