Servlet API. Programmazione in Ambienti Distribuiti A.A. 2003-04



Documenti analoghi
Tecnologie di Sviluppo per il Web

JAVA SERVLET: I filtri

Introduzione alla programmazione Http lato server in Java

Note pratiche sullo sviluppo di servlet (I)

Server-side Programming: Java servlets Parte II

Programmazione server-side: Java Servlet

Tener traccia del client

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

Architetture Web: un ripasso

SERVLET & JSP DISPENSE

Tecnologie di Sviluppo per il Web

Osservazioni. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2005/06-1

Tecnologie di Sviluppo per il Web

Tito Flagella - Introduzione alla programmazione di Servlet

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

Laboratorio di reti II: Servlet

Tecnologie di Sviluppo per il Web

Svantaggi delle servlet

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

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

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

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

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

Gestire le sessioni con le Servlet

Progetto di reti di Calcolatori e Sistemi Informatici

Un contatore di accessi

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

Progetto di Gestione Documenti in Ambiente Web

Laboratorio di Basi di Dati

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

3 ServletContext. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Antonio d Acierno 13/01/2006

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

Introduzione al linguaggio Java: Servlet e JSP

Tecnologie di Sviluppo per il Web

Laboratorio di sistemi Prima Web Application JSP [Java]

Ciclo di vita di una Servlet

PRACTICAL DEVELOPMENT OF A WEB SERVICE

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

Corso di Applicazioni Telematiche

Laboratorio di reti II: Java Server Pages

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 /

Laboratorio di Programmazione di Rete

Web Application model. Servlet. Servlet e Servlet Container. Introduzione alle Servlet

Base di dati e sistemi informativi

Spring WS Sviluppare WebService in Java

Programmazione dei socket con TCP #2

Laboratorio di Basi di Dati e Web

Protocolli applicativi: FTP

Servlet e JDBC. Programmazione in Rete e Laboratorio

Lezione 1 Introduzione

CORSO DI PROGRAMMAZIONE JAVA

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

Università degli studi dell Aquila. Sistemi di elaborazione delle informazioni

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

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

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

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

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

31/05/2013. Sistemi Web Distribuiti (parte 2) - Indice dei Contenuti - Naming. Corso Sistemi Distribuiti 6 cfu Docente: Prof. Marcello Castellano

Il Protocollo HTTP e la programmazione di estensioni Web

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

Architetture Web parte 2

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di dati

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

Implementazione di MVC. Gabriele Pellegrinetti

Java Servlet. Corso di Applicazioni Telematiche. A.A Lezione n.10 Prof. Roberto Canonico

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

Framework di Middleware. per Architetture Enterprise

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

Socket & RMI Ingegneria del Software - San Pietro


L architettura MVC (Model- View-Controller) Introduzione

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

SWIM v2 Design Document

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB.

Architetture Web I Server Web e gli Standard della Comunicazione

Tomcat struttura delle directory

Architetture Web. parte 1. Programmazione in Ambienti Distribuiti A.A

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

Introduzione alle applicazioni di rete

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Servlet. Possibili usi di una Servlet. Servlet e Servlet Container. Introduzione alle Servlet

Seminario di Sistemi Distribuiti RPC su SOAP

Flavio De Paoli

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

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

Server-side Programming: Java servlets Parte I

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

Programmazione a Oggetti Lezione 10. Ereditarieta

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

FONDAMENTI di INFORMATICA L. Mezzalira

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

1 JSPDynPage, componenti portale e Java Server Pages

Componenti Web: client-side e server-side

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

Progettazione ed implementazione di un tool per lo sviluppo di applicazioni in Esperanto

Settimana I...1. Giorno 1 - Introduzione all XSLT...3

Transcript:

Servlet API Programmazione in Ambienti Distribuiti A.A. 2003-04 Servlet Interfaccia Java che modella il paradigma richiesta/elaborazione/risposta tipico delle applicazioni lato server Presuppone l esistenza di un contenitore che cattura gli invarianti di sistema (gestione degli accessi via rete, gestione delle sessioni, meccanismi di configurazione e di gestione, ) un insieme di classi che implementano l interfaccia e forniscono la logica applicativa concreta da applicarsi ad una data richiesta 2 1

Servlet API (1) Package relativi ai servlet javax.servlet: contiene le classi e le interfacce che definiscono il comportamento generico di un servlet (paradigma richiesta/elaborazione/risposta) javax.servlet.http: contiene le classi e le interfacce che modellano il comportamento di richieste/risposte trasportate attraverso il protocollo http 3 Servlet API (2) ServletContext Servlet GenericServlet HttpServlet ServletRequest ServletRespone javax.servlet HttpSession HttpServletRequest HttpServletResponse javax.servlet.http MyServlet 4 2

Interfaccia javax.servlet.servlet void init(servletconfig config) Inizializzazione del servlet: eventuale acquisizione di risorse globali void service(servletrequest req, ServletResponse res) Codice di elaborazione di una richiesta void destroy() Distruzione del servlet: rilascio delle risorse acquisite ServletConfig getservletconfig() Metodo che permette di accedere ai parametri di inizializzazione comunicati dal contenitore al servlet tramite il metodo init() java.lang.string getservletinfo() Ritorna una stringa informativa relativa al servlet (autore, funzione, copyright, ) 5 ServletRequest, ServletResponse Interfacce appartenenti al package javax.servlet Riassumono le caratteristiche, indipendenti dal protocollo di trasporto, di richiesta e risposta ServletRequest rappresenta la richiesta del client: Nome e valore dei parametri, InputStream, attributi, indirizzo del client, ServletResponse rappresenta la risposta del servlet al client OutputStream, Writer, ContentType, Locale, codifica adottata, 6 3

Classe javax.servlet.genericservlet Classe astratta che implementa le funzionalità di un servlet generico Offre un insieme di metodi utili per automatizzare compiti frequenti: String getinitparameter(string name) void log(msg) ServletContext getservletcontext() 7 Ciclo di vita di un servlet Il contenitore crea un unica istanza del servlet e ne invoca il metodo init() Finché init() non ritorna, il contenitore non invoca nessun altro metodo del servlet Ad ogni richiesta, il contenitore invoca il metodo service() utilizzando un thread differente Attenzione agli accessi concorrenti a risorse condivise (attributi della classe, oggetto sessione, ) A proprio piacimento, il contenitore decide di invocare il metodo destroy() per rimuovere il servlet L invocazione di destroy() può essere contemporanea all esecuzione del metodo service() da parte di uno o più worker thread! 8 4

Classe javax.servlet.http.httpservlet Specializzazione del concetto di servlet rispetto al trasporto HTTP Costituisce la classe base da cui le implementazioni concrete di servlet derivano Il metodo service( ) re-indirizza le richieste ricevute sui metodi: void doget(httpservletrequest,httpservletresponse) void dopost( ) void doput( ) void dodelete( ) 9 HTTPServletRequest, HTTPServletResponse HTTPServletRequest Estensione di ServletRequest Utilizzato per passare i dati della richiesta attraverso il protocollo HTTP o Parametri, cookie, header, tipo di richiesta, HTTPServletResponse Estensione di ServletResponse Utilizzato per inviare i risultati dell elaborazione al client attraverso il protocollo HTTP o Header, cookie, stream di uscita, eventuali errori, 10 5

Esempio import javax.servlet.*; import javax.servlet.http.*; import java.util.enumeration; public class MyServlet extends HttpServlet { String strglobal= this is a global variable ; } protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, java.io.ioexception { String strlocal= this is a local variable ; response.setcontenttype("text/html"); java.io.printwriter out = response.getwriter(); /* output your page here */ out.print("<html><title>myservlet</title><body>"); out.print("<p><center><b><font SIZE=+2>MyServlet </FONT></b></center>"); out.print("<p>this is the servlet response</html>"); } 11 Accedere ad un servlet (1) I servlet presenti all interno di un contenitore sono descritti nel file web.xml secondo il seguente frammento (semplificato) di DTD: <!ELEMENT servlet (servlet-name, display-name?, description?, servlet-class, init-param*)> <!ELEMENT servlet-name (#PCDATA)> <!ELEMENT display-name (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT servlet-class (#PCDATA)> <!ELEMENT init-param (param-name, param-value, description?)> <!ELEMENT param-name (#PCDATA)> <!ELEMENT param-value (#PCDATA)> 12 6

Accedere ad un servlet (2) La corrispondenza tra URL e servlet è anche descritta all interno del file web.xml La descrizione complessiva del DTD relativo al file web.xml è disponibile all URL http://java.sun.com/dtd/web-app_2_3.dtd <!ELEMENT servlet-mapping (servlet-name, url-pattern)> <!ELEMENT servlet-name (#PCDATA)> <!ELEMENT url-pattern (#PCDATA)> 13 Esempio <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>myservlet</servlet-name> <servlet-class>mypackage.myservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myservlet</servlet-name> <url-pattern>/servlet/myservlet</url-pattern> </servlet-mapping> </web-app> 14 7

Differenze tra Servlet e JSP Le pagine JSP sono compilate in un servlet e sono pertanto funzionalmente equivalenti Le pagine JSP sono più convenienti quando La risposta contiene principalmente testo (la cui struttura è più esplicita rispetto al caso dei servlet, in cui è affogata nel codice) I servlet convengono quando La risposta non è testuale (ad es., immagini dinamiche) La logica di elaborazione domina rispetto alla risposta generata (ad es., il controllore nel pattern MVC) 15 Filtri (1) Per semplificare la logica di gestione di un controllore, nel paradigma MVC è possibile utilizzare un insieme di moduli (filtri) con il compito di filtrare richieste e risposte Ciascun filtro riceve le richieste destinate ad un (insieme di) URL e decide, in base alla propria logica se Inoltrare la richiesta al destinatario Modificare uno o più parametri Reindirizzare la richiesta verso un indirizzo differente 16 8

Filtri (2) Nel caso in cui la richiesta (modificata o meno) sia inoltrata al destinatario, la risposta che esso ritorna viene passata al filtro che può ulteriormente modificarla Più filtri possono essere collegati in cascata dinamicamente L applicazione dei filtri è completamente guidata dal file web.xml che descrive la corrispondenza tra URL e classi filtro 17 Filtri (3) Contenitore init( ) MyServlet richiesta init( ) dofilter( ) MyFilter chain.dofilter( ) service( ) risposta 18 9

Implementazione di Filtri Un filtro implementa l interfaccia javax.servlet.filter: void init(filterconfig filterconfig) void destroy() void dofilter(servletrequest request, ServletResponse response, FilterChain chain) javax.servlet.filterchain è un interfaccia con un solo metodo: void dofilter(servletrequest request, ServletResponse response) 19 Uso di filtri Campi in cui i filtri trovano naturale collocazione: Autenticazione Log automatico delle richieste e delle risposte Conversione di formato per immagini Compressione dei dati Crittografia Generazione di eventi relativi all accesso a risorse Conversione di formato (XSL/T) 20 10

Inserire un filtro Due sezioni del file web.xml filter descrive un fitro, specificandone classe Java, nome, eventuali parametri filter-mapping esprime la corrispondenza tra URL e filtri da utilizzare Nel caso in cui ad una data URL corrispondano due o più filtri, questi sono applicati nell ordine in cui le rispettive sezioni filter-mapping compaiono nel file web.xml 21 Esempio (1) public class MyFilter implements Filter { public init(filterconfig) {} public destroy() {} public dofilter( ServletRequest req, ServletResponse res, FilterChain chain) { if (req instanceof HttpServletRequest) { HttpSession session= ((HttpServletRequest)req).getSession(); if (session.getattribute( User )==null) { res.sendredirect( login.jsp ); } else { chain.dofilter(req,res); } } } } 22 11

Esempio (2) <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <filter> <filter-name>myfilter</filter-name> <filter-class>mypackage.myfilter</filter-class> </filter> <filter-mapping> <filter-name>myfilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> </web-app> 23 Servlet: analisi critica Vantaggi Veloci ed efficienti Scalabili Persistenti Flessibili Il contenitore garantisce la separazione fisica tra applicazioni (vengono usati ThreadGroup differenti) Svantaggi Complicato modificare il codice HTML di risposta La presentazione e la logica sono fortemente accoppiate L architettura può diventare complessa se si prendono in considerazione le caratteristiche più avanzate 24 12