Introduzione alla programmazione Http lato server in Java



Похожие документы
Tito Flagella - Introduzione alla programmazione di Servlet

Note pratiche sullo sviluppo di servlet (I)

Programmazione server-side: Java Servlet

Servlet API. Programmazione in Ambienti Distribuiti A.A

SERVLET & JSP DISPENSE

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

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

Laboratorio di sistemi Prima Web Application JSP [Java]

Tener traccia del client

Architetture Web: un ripasso

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

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

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

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

Accesso Web a Data Base

Laboratorio di Basi di dati

Laboratorio di Basi di Dati e Web

Laboratorio di reti II: Servlet

Laboratorio di reti II: Java Server Pages

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

Gestire le sessioni con le Servlet

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

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

Un contatore di accessi

Tecnologie di Sviluppo per il Web

Il Protocollo HTTP e la programmazione di estensioni Web

Servlet. Nicola Gessa

Tomcat struttura delle directory

Svantaggi delle servlet

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

Programmazione dei socket con TCP #2

Sessioni Applicative in Http. Tito Flagella

Socket & RMI Ingegneria del Software - San Pietro

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 /

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

1 Applicazione J2EE sul SAP WAS con SAP NWDS

Introduzione al linguaggio Java: Servlet e JSP

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

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

Corso di Applicazioni Telematiche

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


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

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

Framework di Middleware. per Architetture Enterprise

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

Architettura MVC-2: i JavaBeans

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

L architettura MVC (Model- View-Controller) Introduzione

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

Tutorial web Application

APPENDICE A Servlet e Java Server Page

Application Server per sviluppare applicazioni Java Enterprise

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

19. LA PROGRAMMAZIONE LATO SERVER

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

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

Lezione III: Oggetti ASP e interazione tramite form HTML

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

Lezione 1 Introduzione

3 ServletContext. Marco Tessarotto Programmazione dei Web Server Anno Accademico

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Architetture Web I Server Web e gli Standard della Comunicazione

Tecnologie di Sviluppo per il Web

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

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

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

Flavio De Paoli

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

Web & basi di dati. Basi di dati & Web. Problema. Pregi e difetti di basi di dati e Web. Architettura generale a livelli. Una gerarchia di soluzioni

JavaServer Pages: Introduzione

Транскрипт:

Introduzione alla programmazione Http lato server in Java Tito Flagella Laboratorio Applicazioni Internet - Università di Pisa

Slide API Java Titleper il Protocollo Http Programmazione Client java.net.url http://docs.oracle.com/javase/7/docs/api/java/net/url.html Apache HttpCommon https://hc.apache.org/httpcomponents-client-4.4.x/index.html Programmazione Server Servlet API http://docs.oracle.com/javaee/7/api/javax/servlet/package-summary.html 2

Slide I Servlet Title Java Estensioni di un server http scritte in Java utilizzando la Servlet API La Servlet API è diventata un estensione standard di Java, dalla versione 1.2 Si tratta di moduli java caricati dinamicamente dagli Application Server 3

Slide Tipica Title Architettura di Deploy 4

Slide Ciclo Title di Vita del Servlet 5

Slide Ciclo Title di Vita del Servlet (2) Il Server carica il servlet Manda in esecuzione il metodo init viene eseguito un unica volta (può non essere thread-safe) durante la init non sono gestite richieste 6

Slide Ciclo Title di Vita del Servlet (3) Il Servlet gestisce richieste tramite il metodo service gestisce la richiesta e produce la risposta deve essere thread-safe; in generale verrà chiamato più volte in concorrenza per non gestire la concorrenza tra thread, il servlet deve implementare l interfaccia SingleThreadModel 7

Slide Ciclo Title di Vita del Servlet (4) I Servlet accettano richieste finché non sono rimossi dal servizio. Quando questo accade: viene chiamato il metodo destroy non può andare in concorrenza con altri destroy può andare in concorrenza con altre richieste di service 8

Slide La servlet Title API... Definita nel package javax.servlet Eseguiti tramite un servlet-engine (es: tomcat) Nessuna assunzione su: come un servlet sia caricato dal server ambiente in cui il server gira (server internals) il protocollo usato per la trasmissione Conseguenza: estrema portabilità 9

Slide La Servlet Title API 10

Slide Programmazione Title di un Servlet Può essere definito implementando la interfaccia javax.servlet.servlet In generale estende la classe javax.servlet.http.httpservlet HttpServlet fornisce un framework per la gestione del protocollo HTTP, lato server Gestisce le richieste HTTP, passando ogni richiesta a un metodo specifico, in funzione del metodo HTTP della richiesta 11

Slide Programmazione Title di un HttpServlet... Per default una estensione di HttpServlet deve avere metodi thread-safe Per gestire una richiesta alla volta: public class SerialServlet extends HttpServlet implements SingleThreadModel { // SingleThreadModel non richiede di definire alcun metodo } 12

Slide Programmazione Title di un HttpServlet Un Servlet derivato da HttpServlet, deve ridefinire i metodi http che intende gestire: doget, per gestire i metodi HTTP GET ed HEAD dopost, per gestire le richieste di POST doput, per gestire le richieste PUT dodelete per gestire le richieste DELETE Per default questi metodi restituiscono un errore di tipo NOT IMPLEMENTED (503) 13

Slide I Metodi Titledell interfaccia Servlet I vari metodi ricevono due oggetti in input: una HttpServletRequest e una HttpServletResponse la classe HttpServletRequest incapsula le comunicazioni dal client al server la classe HttpServletResponse incapsula le comunicazioni dal server al client 14

Slide Uso di Title HttpServletRequest Per ogni metodo HTTP: getparameternames accede alla lista dei nomi getparameter accede ai parametri per nome getquerystring consente il parsing manuale della QUERY_STRING (solo per HTTP GET) Per i metodi POST, PUT e DELETE di HTTP: per dati testuali: BufferedReader restituito da getreader per dati binari: ServletInputStream restituito da getinputstream 15

Slide La interface Title ServletResponse Consente al servlet di: settare content length della risposta settare mime type della risposta accedere all output stream ServletOutputStream HttpServletResponse è una sottoclasse di ServletResponse con metodi specifici per HTTP 16

Slide Uso di Title HttpServletResponse La risposta può essere restituita usando: il Writer restituito dalla getwriter, per dati testuali; l OutputStream restituito dalla getoutputstream, per dati binari; Prima di accedere a Writer o a OutputStream bisogna settare l HTTP header relativo al tipo di dati 17

Slide Servlet TitleHello World import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloClientServlet extends HttpServlet { protected void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { } res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("<html><head>" + "<TITLE>Hello Client!</TITLE>"+ + "</HEAD><BODY>Hello Client!</BODY></HTML>"); out.close(); } 18

Slide Esempio Titledi risposte binarie res.setcontenttype("image/jpg"); ServletOutputStream out = res.getoutputstream(); out.write( 19

Slide Accesso Titleai dati delle Form <form action=http://server-isi/servlet/login method="get"> User: <input type="text" name= id"> <br> Password: <input type= password name="pass"> <input type="submit" value= Accedi"> </form> ----------------------------------------------------------------------------------------------------- --------- protected void doget(httpservletrequest req, HttpServletResponse res) { String login = req.getparameter( id ); String password = req.getparameter( pass ); verifica(login, password); } 20

Slide Esempio Titledi Accesso agli Header Enumeration headernames = request.getheadernames(); while(headernames.hasmoreelements()) { String headername = (String)headerNames.nextElement(); out.println("<tr><td>" + headername); out.println(" <TD>" + request.getheader(headername)); } 21

Slide Il Deploy Title di un servlet... Il deploy avviene in un formato standard in ambiente J2E, il formato WAR (Web Application Archive) Si tratta di un archivio zip, con una struttura ed un file standard di manifest Il WAR va installato nelle cartelle di deploy. In tomcat, nella cartella webapps La URL a cui sarà accessibile il servlet dall'esterno ed altri parametri del servlet 22

Slide Le pagine Title JSP Java Server Pages è una facility per realizzare servlet, partendo dall'ottica della presentazione Si tratta di pagine html, con codice Java embedded La compilazione delle pagine JSP in Servlet avviene automaticamente al momento del primo accesso ad ogni pagina 23

Slide Esempio Titledi codice JSP <HTML> <BODY> <H2>Esempio Pagina JSP</H2> <p>sono le Ore: <%= new java.util.date() %> </p> <p>operazione richiesta da: <%= request.getparameter("utente") %> </p> </BODY> </HTML> 24

Slide Uso congiunto Title di Servlet e JSP Teoricamente Servlet e pagine JSP potrebbero essere interscambiabili in qualunque applicazione Nella realtà, un uso disattento di queste due tecnologie rende le applicazioni rapidamente ingestibili 25

Slide Il Controller Title MVC 1 2 5 4 3 26

Slide Condivisione Title dei Dati tra Servlet e JSP I dati vengono preparati dal servlet in opportuni bean di interscambio Il Servlet li setta sulla richiesta, la sessione o il contesto. Es: BeanClass bean = new BeanClass( ); request.setattribute("key", bean); Il Servlet passa il controllo alla pagina JSP: RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(url); dispatcher.forward(request, response); La pagina JSP usa i bean per la presentazione: <jsp:usebean id="key" class="sample.beanclass" scope="request" /> <jsp:getproperty name="key" property="someprop" /> 27