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



Documenti analoghi
Programmazione server-side: Java Servlet

Architetture Web: un ripasso

Corso di Informatica Modulo T3 B2 - Database in rete

Tener traccia del client

Tecnologie di Sviluppo per il Web

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

appunti delle lezioni Architetture client/server: applicazioni client

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

Corso di Reti di Calcolatori T

Architettura MVC-2: i JavaBeans

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

Corso di Reti di Calcolatori. java.net.url

Introduzione alla programmazione Http lato server in Java

Parte II: Reti di calcolatori Lezione 10

Socket & RMI Ingegneria del Software - San Pietro

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

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

Architettura Client-Server

Accesso Web a Data Base

Gestire le sessioni con le Servlet

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel , dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Programmazione dei socket con TCP #2

Note pratiche sullo sviluppo di servlet (I)

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

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRGDWDJUDP

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

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

Java: la libreria delle classi

Parte II: Reti di calcolatori Lezione 12

Applicazioni web. Parte 5 Socket

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

Corso sul linguaggio Java

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

Corso di Reti di Calcolatori L-A

HTML il linguaggio per creare le pagine per il web

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Cup HiWeb. Integrazione dei servizi del CUP Marche in applicativi di terze parti

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

GenLApp Generazione Lista di Applicazioni. Design Patterns. Classi Essenziali. Modellazione Dati. Progettazione della Linea di Prodotti

Esercitazione 01: DDL e DML di base

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 /

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

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

Utilizzo delle classi

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

Client - Server. Client Web: il BROWSER

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Altri tipi di connessione

RMI. Java RMI RMI. G. Prencipe

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

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

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_ Stefano Millozzi

Servlet API. Programmazione in Ambienti Distribuiti A.A

Alarms Android Mobile Programming Prof. R. De Prisco

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Progetto di Gestione Documenti in Ambiente Web

appunti delle lezioni Architetture client/server: applicazioni server

Programmare con le Socket TCP in java. 2: Application Layer 1

Client e Server comunicano tramite il protocollo SOAP.

Java: Compilatore e Interprete

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

SWIM v2 Design Document

Tecnologie di Sviluppo per il Web

Database e reti. Piero Gallo Pasquale Sirsi

Corso di Reti di Calcolatori

Corso di Reti di Calcolatori. Datagrammi

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Programmare con le Socket TCP

Informatica. Prof. M. Colajanni Università di Modena Reggio Emilia

Capitolo 4 Pianificazione e Sviluppo di Web Part

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Architetture Web parte 2

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

HR - Sicurezza. Parma 17/12/2015

Internet Architettura del www

Guida al sistema. Dott. Enea Belloni

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

19. LA PROGRAMMAZIONE LATO SERVER

Registratori di Cassa

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Amazon VPC (Virtual Private Cloud)

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

SERVICE BROWSER. Versione 1.0

Pagina 2 di 14. Indice

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Ata_NiAg02. Modulo Gestione Agenti

Guida all uso delle Web View su ios

Programmare con le Socket

Guida all uso di Java Diagrammi ER

Il Protocollo HTTP e la programmazione di estensioni Web

GESTIONE DEL NUMERO RICETTA ELETTRONICA (NRE)

Reti di Telecomunicazione Lezione 8

Introduzione al corso

SCI Sistema di gestione delle Comunicazioni Interne > MANUALE D USO

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Introduzione JDBC interfaccia java.sql driver caricare i driver

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Scheda 15 Accedere ai DataBase con JDBC

Transcript:

Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB Http con java, URL Ing. Marco Mamei Anno Accademico 2004-2005 M. Mamei - Tecnologie e Applicazioni Web 1

URL E CONNESSIONI Sono un insieme di classi java usate per comunicare tramite http (o altri protocolli applicativi standard) in modo semplificato (ma meno flessibile) rispetto alle socket. Gestiscono automaticamente i dettagli del protocollo di comunicazione (ad esempio, http). La classe URL cattura il concetto di indirizzo Internet (URL) nella forma standard del Web: http://localhost/index.html file:///autoexec.bat... Un oggetto URL si crea a partire dall indirizzo che rappresenta: URL url = new URL("..."); e si usa per aprire una connessione verso tale indirizzo. Per aprire una connessione, si invoca sul-l oggetto URL il metodo openconnection(): URLConnection c = url.openconnection(); Il risultato è un oggetto URLConnection, che rappresenta una connessione aperta con un server Web M. Mamei - Tecnologie e Applicazioni Web 2

in pratica, così facendo si è stabilito un canale di comunicazione http verso l indirizzo richiesto M. Mamei - Tecnologie e Applicazioni Web 3

URL E CONNESSIONI Per comunicare si recuperano dalla connessione i due stream (di ingresso e di uscita) a essa associati, tramite i metodi: public InputStream getinputstream() restituisce lo stream di input da cui leggere i dati (byte) che giungono dall altra parte public OutputStream getoutputstream() restituisce lo stream di output su cui scrivere i dati (byte) da inviare all altra parte Poi, su questi stream si legge e si scrive come su qualunque altro stream di byte. Per la scrittura occorre però abilitare la connessione per l output. Questo si fa attraverso il comando seguente. connection.setdooutput(true); M. Mamei - Tecnologie e Applicazioni Web 4

ESEMPIO DI USO DI URL 1 Connettersi a un URL dato e, nell ipotesi che esso invii testo, visualizzarne il contenuto. import java.net.*; import java.io.*; public class URLConnectionReader public static void main(string[] args) throws Exception URL yahoo = new URL("http://www.yahoo.it"); URLConnection yc = yahoo.openconnection(); BufferedReader in = new BufferedReader( new InputStreamReader(yc.getInputStream())); String inputline; while((inputline = in.readline())!= null) System.out.println(inputLine); in.close(); M. Mamei - Tecnologie e Applicazioni Web 5

ESEMPIO DI USO DI URL 2 Connettersi a un URL dato, inviare una richiesta http con paramerti e ricevere il risultato (ad esempio una pagina web). import java.net.*; import java.io.*; public class URLConnectionWriter public static void main (String[] args) throws Exception URL url = new URL("http://localhost/midp/hits"); URLConnection connection = url.openconnection(); connection.setdooutput(true); PrintWriter out = new PrintWriter( connection.getoutputstream()); out.println("string=ciao"); out.close(); BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String inputline; while((inputline = in.readline())!= null) System.out.println(inputLine); in.close(); M. Mamei - Tecnologie e Applicazioni Web 6

ESEMPIO DI USO DI URL 2 La servlet che fa da controparte: import java.io.*; import java.util.*; import javax.servlet.*; public class Ese1 extends GenericServlet public void service(servletrequest request, ServletResponse response) throws IOException, ServletException response.setcontenttype("text/html"); String field = null; String value = null; Enumeration flds = request.getparameternames(); while(flds.hasmoreelements()) field= (String)flds.nextElement(); value= request.getparameter(field); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<body>"); out.println("<h1>hello World!</h1>"); out.println(value+"<br>"); out.println("</body>"); out.println("</html>"); NOTA: Se avessimo la possibilitá di trasformare in forma grafica quello che il programma legge dall URL avremmo praticamente realizzato un Browser Web. M. Mamei - Tecnologie e Applicazioni Web 7

SCENARI APPLICATIVI Queste tecniche permettono di estendere gli scenari applicativi delle servlet e delle altre tecnologie viste fin ora. Non siamo più vincolati ad accedere a una servlet tramite form html e browser. Possiamo realizzare il programma (anche non interattivo) che meglio si adatta alle esigenze applicative. Questo in generale apre la strada verso gli scenari di Web service: un Web service può essere definito come un unità di applicazione logica che offre dati e servizi ad altre applicazioni. Queste applicazioni accedono al Web, attraverso protocolli standard quali HTTP e XML Gli scenari applicativi associati vastissimi. Basti pensare che tutto il concetto di e-commerce routa attorno a queste tenologie. M. Mamei - Tecnologie e Applicazioni Web 8

MOTIVAZIONE E VANTAGGI Perché non possiamo utilizzare server e socket come quelle che conoscevamo già? Interoperabilità: utilizzando tecnologie standard (http e xml) una servlet o un client sono facilmente rivendibili in altri contesti. Servizi aggiuntivi: Tomcat e in generale altri container (middleware) offrono utili servizi aggiuntivi. Considerazioni come: multithreading, comunicazione di rete, sciurezza, etc. vengono gestite automaticamente e in maniera separata dal container. Inoltre, Tomcat è un sistema improprio per gestire web service di questo tipo. Noi useremo Tomcat perché è semplice e veloce, ma esistono container specifici (ad esempio i server J2EE) che offrono servizi ancora più potenti. Le tecniche che vediamo sono comunque generali riutilizzabili anche con questi altri sistemi. M. Mamei - Tecnologie e Applicazioni Web 9

ESEMPIO DI APPLICAZIONE 1/3 Vediamo un esempio di applicazione Web che utilizza queste tecnologie. Prendiamo la ditta SkatesTown che vende skateboards. Questa ditta mantiene lo stato del suo magazzino in un file xml strutturato come segue: <? xml version= 1.0?> <products> <product> <id>947-ti</id> <name>titanium Glider</name> <type>skateboard</type> <desc>street-style titanium skateboard.</desc> <price>129.00</price> <instock>36</instock> </product> </products> SkatesTown dispone poi di una servlet per controllare lo stato dell inventario. La servlet richiede due parametri all interno della sua invocazione http: id e quantity. id=947-ti quantity=12 M. Mamei - Tecnologie e Applicazioni Web 10

ESEMPIO DI APPLICAZIONE 2/3 Il programma della servlet non fa altro che analizzare il file xml relativo al magazzino e controllare l eventuale disponibilità di un certo numero di pezzi di un dato articolo. La servlet risponde con una pagina html formattata come segue: <html> <body> The item is available in the requested quantity. </body> </html> oppure <html> <body> The requested quantity is not available.<br> Only 4 items in stock! </body> </html> Il sistema mette a disposizione due modalità di accesso. La prima è tramite browser e form HTML. Un operatore umano compila una form e interroga la servlet che restituisce la pagina HTML con il risultato. La seconda è tramite un applicazione specifica che usa gli URL. Questa accede alla servlet e automaticamente controlla la disponibilità di almeno 5 elementi di tutti i prodotti. M. Mamei - Tecnologie e Applicazioni Web 11

ESEMPIO DI APPLICAZIONE 3/3 A questo punto un'altra servlet potrebbe essere creata per gestire gli ordini degli elementi sotto scorta. Questa potrebbe prevedere un interfaccia browser per operatori umani, ma anche essere acceduta dalla applicazione URL precedente per ordinare in modo automatico tutti gli elementi sotto scorta. Note varie: La sevlet potrebbe distinguere il suo comportamento sulla base di chi l ha invocata (ad esempio modificando l invocazione URL da quella della form html). In questo modo potrebbe rispondere HTML al browser, XML all applicazione. Il database relativo al magazzino potrebbe essere un vero db. Attraverso il meccanismo JDBC, che vedremo, un applicazione java può accedere a un database. Come fa un applicazione URL a conoscere come invocare una servet? Che parametri devono essere passati? Possibilità di interrogare servlet che descrivono come invocarne altre (WSDL) M. Mamei - Tecnologie e Applicazioni Web 12