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

Documenti analoghi
Corso di Applicazioni Telematiche

Programmazione server-side: Java Servlet

Antonio d Acierno 13/01/2006

Servlet 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 /

Introduzione a Java Servlet Technology

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

Tito Flagella - Introduzione alla programmazione di Servlet

Ciclo di vita di una Servlet

Un contatore di accessi

Servlet e JDBC. Programmazione in Rete e Laboratorio

Architetture Web: un ripasso

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

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

modulo: siti web centrati sui dati

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

Tecnologie di Sviluppo per il Web

Servlet API. Programmazione in Ambienti Distribuiti A.A

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria. Tecnologie Web T. Esercitazione opzionale Spring MVC

Laboratorio di Programmazione di Rete

Server-side Programming: Java servlets Parte II

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

Tener traccia del client

Server-side Programming: Java servlets Parte I

Introduzione alla programmazione Http lato server in Java

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web

Note pratiche sullo sviluppo di servlet (I)

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

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

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

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

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

SERVLET & JSP DISPENSE

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

Corso di Basi di Dati e Sistemi Informativi: Sperimentazioni

Basi di dati - Laboratorio

Gestire le sessioni con le Servlet

Laboratorio di Basi di Dati e Web

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

Tecnologie di Sviluppo per il Web

Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste. Basi di Dati e Web. Credits to: Prof. M. Di Felice UniBO

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

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

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

Laboratorio di reti II: Servlet

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

Stateless Session Bean

Sessioni Applicative in Http. Tito Flagella

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


JAVA SERVLET: I filtri

Servlet: approfondimenti

Stateless Session Bean

Laboratorio di Basi di Dati e Web

Anno Accademico Corso di Tecnologie Web Web Application: Servlet. Universita degli Studi di Bologna - Facolta di Ingegneria

Laboratorio di Basi di dati

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Introduzione alle JSP

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

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

PRIMO MODULO. DURATA: 80 ore CONTENUTI

Laboratorio di Programmazione di Rete

Tutorial web Application

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

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

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

Programmazione modulare

Pagina 1 di 6. Client SOAP di test per i servizi del Sistema di Interscambio. Indice

Tomcat struttura delle directory

Svantaggi delle servlet

Laboratorio di Basi di Dati e Web

Una breve presentazione. Basati sulla specifica EJB Sun Microsystems. Consentono di costruire applicazioni ad oggetti distribuite, utilizzando Java

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

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

Le tecnologie software Internet

Basi di dati e world wide web

Laboratorio di sistemi Prima Web Application JSP [Java]

JDBC. Paolo Atzeni. 11 marzo Progettazione di applicazioni, una premessa

Laboratorio di Programmazione di Rete

La Tecnologia CGI-Servlet

Il Web come Interfaccia Utente di un Sistema Informativo

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

Laboratorio di Programmazione di Rete

Java Servlet. Davide Taibi.

2011 Politecnico di Torino 1

Il linguaggio PHP. Insegnarvi tutto il PHP? Non esattamente Obiettivo: insegnarvi ad interagire via web con una base dati

Sistemi Distribuiti M Proposta di esercizio: Mapping Object-Relational attraverso Hibernate e JPA

AJAX. Riccardo Rosati

AJAX. Riccardo Rosati

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

Prova scritta del 13 luglio 2010

INTRODUZIONE A J2EE 1.4 E AI SERVIZI WEB ENTERPRISE

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

Java J2EE JSP e Servlets

Transcript:

Java Servlet Corso di Applicazioni Telematiche A.A. 2005-06 Lezione n.10 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 Servlet API: HttpSession Il protocollo HTTP è un protocollo stateless Per costruire applicazioni web complesse e per poter suddividere operazioni complesse in più parti, è necessario riconoscere il client che ha inviato la richiesta, memorizzando uno stato conversazionale 12

Meccanismi per implementare il concetto di sessione HTTP Cookies Un cookie è un insieme sintetico di informazioni inviate da un web server ad un client Il client, ogni volta che accede una pagina su quel server, reinvia queste informazioni URL-Rewriting Ogni URL di invocazione di servlet è riscritto in modo da portare con se le informazioni necessarie ad identificare la sessione Hidden form field Servlet API: HttpSession (2) HttpSession supporta il concetto di sessione in modo indipendente dai meccanismi utilizzati (cookie, URL rewriting, hidden form field) HttpSession session = request.getsession(true); Con il parametro true, se la sessione non esiste ancora viene creata; con parametro false, se la sessione non esiste getsession ritornerà null La sessione permette di: istanziare nella memoria del server degli oggetti che rappresentano lo stato delle operazioni svolte da uno specifico client ottenere dati memorizzati da servlet eseguite precedentemente 13

Servlet API: HttpSession (3) Gli oggetti HttpSession vivono sul server e sono automaticamente associati al client tramite una meccanismo tipo cookies o URLrewriting Su un oggetto HttpSession si possono invocare una serie di metodi, tra cui : setattribute(string name, Object obj) Object getattribute(string name) Domande? 14