Programmazione server-side: Java Servlet

Похожие документы
Corso di Applicazioni Telematiche

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

Architetture Web: un ripasso

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

Server-side Programming: Java servlets Parte II

Tecnologie di Sviluppo per il Web

Note pratiche sullo sviluppo di servlet (I)

Introduzione alla programmazione Http lato server in Java

Gestire le sessioni con le Servlet

Tener traccia del client

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

Tutorial web Application

Servlet API. Programmazione in Ambienti Distribuiti A.A

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di dati

Laboratorio di Basi di Dati

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 reti II: Servlet

SERVLET & JSP DISPENSE

PRACTICAL DEVELOPMENT OF A WEB SERVICE

Tecnologie di Sviluppo per il Web

Application Server per sviluppare applicazioni Java Enterprise

Tomcat struttura delle directory

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

19. LA PROGRAMMAZIONE LATO SERVER

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

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

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

Applicazioni Web: meccanismi per il passaggio di informazioni tramite HTTP Corso di Applicazioni Telematiche

Il web server Apache Lezione n. 3. Introduzione

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Strumenti per la programmazione

Programmazione Java Avanzata

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

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

Programmazione dei socket con TCP #2

Tecnologie di Sviluppo per il Web

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 /

CORSO DI PROGRAMMAZIONE JAVA

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

Protocolli e architetture per WIS

Telematica II 17. Esercitazione/Laboratorio 6

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

Panoramica: che cosa è necessario

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

Introduzione al linguaggio Java: Servlet e JSP

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

Componenti Web: client-side e server-side

Architetture Web I Server Web e gli Standard della Comunicazione

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

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

Spring WS Sviluppare WebService in Java

Corso di Informatica Modulo T3 B2 - Database in rete

Il Gestore Eventi di OpenSPCoop i. Il Gestore Eventi di OpenSPCoop

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

Svantaggi delle servlet

JAVA SERVLET: I filtri

Laboratorio di Information Retrieval SOLR. Marco Rossetti Based on Emanuele Panzeri s slides panzeri@disco.unimib.

Tale attività non è descritta in questa dispensa

Lezione 1 Introduzione

APPENDICE A Servlet e Java Server Page

Primi passi con Apache Tomcat. L application server dell Apache group

Introduzione alle applicazioni di rete

Java Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia

Corso basi di dati Installazione e gestione di PWS

Laboratorio di sistemi Prima Web Application JSP [Java]

3 ServletContext. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Tito Flagella - Introduzione alla programmazione di Servlet

Il Registro dei Servizi di OpenSPCoop i. Il Registro dei Servizi di OpenSPCoop

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

Architetture Web parte 2

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

Il Protocollo HTTP e la programmazione di estensioni Web

Laboratorio di reti II: Java Server Pages

UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTA DI INGEGNERIA DIPARTIMENTO DI SISTEMI E INFORMATICA. Elaborato di Tecnologie del Software per Internet

Strumenti per lo sviluppo e la gestione di Ontologie

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Il Web-Service SDMX dell ISTAT

Web Programming Specifiche dei progetti

Framework di Middleware. per Architetture Enterprise

PHP e Java ovvero come poter sfruttare entrambi i linguaggi e vivere felici... forse

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

Programmazione ad Oggetti. Java Parte I

Server Web. Apache Tomcat. Modalità di funzionamento. Autore: Roberto Fabbrica Diapo 1. Diapo 2. Diapo 3

Guida all uso delle Web View su ios

1 EJB e Portal Component Object

SWIM v2 Design Document

Транскрипт:

Programmazione server-side: Java Servlet Corso di Applicazioni Telematiche A.A. 2006-07 Lezione n.11 parte II Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Cos è una Servlet? Una Servlet è un componente software scritto in Java, gestito da un container, che produce contenuto web dinamico (Java Servlet Specification, v. 2.4) 1

Cos è una Servlet? (2) Una Servlet interagisce con un web Client attraverso il paradigma di comunicazione request/response Servlet Container Il servlet container (o servlet engine) è un estensione di un web server che fornisce l ambiente di esecuzione ad una Servlet Esempio di servlet container open-source: Tomcat Tomcat è un servlet container open-source interamente scritto in Java disponibile su: http://tomcat.apache.org/ 2

Installazione e configurazione di Tomcat Scaricare l installer di Apache Tomcat per la propria piattaforma (Win32 o Linux) Versione attuale (aprile 2006): 5.5.x Installare Tomcat Per convenzione indicheremo con install_dir la directory base della installazione (es. C:\wamp\Tomcat\Tomcat5.5) Installare le applicazioni manager ed admin per la gestione delle applicazioni web e del server stesso vedi Manager App HOW-TO sul sito ufficiale Abilitare la funzione di ri-caricamento automatico Trasformare <Context> in <Context reloadable="true"> in install_dir/conf/context.xml (per tutte le applicazioni web) o nel file Context XML descriptor della specifica applicazione Installazione e configurazione di Tomcat (2) Abilitare l invocazione delle servlet senza deployment descriptor (opzionale) In install_dir/conf/web.xml togliere il commento agli elementi servlet and servlet-mapping in modo da abilitare l invoker servlet su un qualunque path del tipo /servlet/* Grazie a questa modifica è possibile copiare il bytecode.class della servlet in WEB-INF/classes e successivamente invocare la servlet tramite la URL http://host/servlet/servletname Utile per un rapido debugging delle servlet prima del deployment In alternativa, se non si sceglie la strada indicata sopra, si devono sempre inserire le servlet sviluppate in un contesto di web application, opportunamente descritte nel deployment descriptor Nel seguito inseriremo le servlet d esempio nel Context /AT_servlet descritto in install_dir/conf/catalina/localhost/at_servlet.xml 3

Context XML descriptor Il Context XML descriptor è un documento XML che contiene la descrizione del Context associato ad una web application In particolare, sono specificati: La base directory della applicazione Il path anteposto al nome delle servet della applicazione per identificarle univocamente Se l applicazione deve essere reloadable o non La descrizione del Context di una applicazione è tipicamente memorizzata in un file XML install_dir/conf/[enginename]/[hostname]/[nome_applicazione].xml Es: install_dir/conf/catalina/localhost/at_servlets.xml AT_servlets.xml Context <?xml version="1.0" encoding="utf-8"?> <Context docbase="c:\java\workspace\at_servlets" path="/at_servlets" reloadable="true"/> 4

Avvio di Tomcat 5

Interazione client-servlet 1. Il Client fa una richiesta HTTP al web server 2. Il web server carica la servlet (solo la prima volta) e crea un thread per eseguirla 3. Il container esegue la servlet richiesta 4. La servlet genera la risposta 5. La risposta viene restituita al client Vantaggi delle servlet Sono molto più veloci dei CGI Persistenti una volta caricata, una servlet rimane in memoria e può ottimizzare l accesso alle risorse attraverso caching, pooling, etc... Implementation independence usano una API standard supportata da molti web server Vantaggi offerti dal linguaggio Java Platform independence, Object Oriented programming, Garbage Collection, 6

Servlet API E un framework di classi Java che offre delle interfacce object oriented ad oggetti che incapsulano la comunicazione tra client e server (request, response) I package javax.servlet e javax.servlet.http definiscono interfacce e classi base da cui un programmatore può derivare le proprie specifiche servlet Una servlet deve implementare l interfaccia Servlet Una servlet può essere fatta derivare dalla classe GenericServlet o da HttpServlet, che implementa i metodi base (es. doget, dopost, ecc ) per gestire l interazione con un client via HTTP Servlet Lifecycle 1. Load & instantiation: Servlet MyServlet = new HttpServlet(); 2. Initialization: MyServlet.init(ServletConfig); 3. Request Handling: MyServlet.service(request, response); 4. End of service: MyServlet.destroy(); 7

Servlet: init() Il metodo init() viene eseguito una volta soltanto per ciascuna servlet Permette di accedere a risorse utili per la servlet aprire connessioni ad un db, ottenere reference ad EJB, ecc Servlet: service(), doget() e dopost() I metodi service(), doget() e dopost() possono essere implementati dal programmatore Il metodo service() per default delega l esecuzione al metodo indicato nella richiesta HTTP del client Le richieste HTTP più comuni sono POST e GET, gestite dai metodi della servlet dopost() e doget() implementate dal programmatore 8

Servlet Lifecycle Multithreading Viene creato un Thread per ogni richiesta Il thread può essere riutilizzato se lo stesso client richiede la stessa servlet Una servlet con un parametro di input package it.unina.at; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Servlet01 extends HttpServlet { public void doget (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String nome = (String)request.getParameter("nome"); HttpSession session = request.getsession(true); session.setattribute("nome", nome); response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html><body>"); out.println("<p>benvenuto, " + nome + "</p>"); out.println("<p>la data di oggi è:"); out.println("<b>" + new java.util.date()+ "</b></p>"); out.println("</body></html>"); } } 9

Struttura di una applicazione web Un applicazione web è costituita da un insieme di pagine statiche, di servlet e di pagine JSP In Tomcat un applicazione web è associata ad un Context La struttura di una applicazione web eseguibile in Tomcat è la seguente: Nella root directory della applicazione: *.html, *.jsp Nella sotto-directory WEB-INF: web.xml il Deployment Descriptor In WEB-INF/classes i file *.class delle servlet (bytecode) In WEB-INF/lib eventuali file di libreria *.jar Deployment descriptor web.xml <?xml version="1.0" encoding="utf-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>servlet01</servlet-name> <servlet-class>it.unina.at.servlet01</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet01</servlet-name> <url-pattern>/servlet01</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app> 10

Prova della servlet Servlet API: HttpRequest interface Permette di: Ottenere i parametri inviati dal client Ottenere il riferimento alla sessione utente Ottenere il flusso dei dati inviati dal client Riconoscere l utente autenticato 11

Servlet API: HttpResponse interface Permette di: Inviare dati al client come HTML oppure come flusso binario Inviare codici di errore e codici di controllo nell intestazione della response HTTP per controllare il comportamento del browser Domande? 12