Sviluppo di Applicazioni Web con Java 2 Enterprise Edition



Похожие документы
Sviluppo di Applicazioni Web con Java 2 Enterprise Edition

Programmazione server-side: Java Servlet

Note pratiche sullo sviluppo di servlet (I)

Architetture Web: un ripasso

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

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

Tener traccia del client

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

Tomcat struttura delle directory

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

Introduzione alla programmazione Http lato server in Java

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

Servlet API. Programmazione in Ambienti Distribuiti A.A

Un contatore di accessi

Programmazione ad Oggetti. Java Parte I

Server-side Programming: Java servlets Parte II

Tecnologie di Sviluppo per il Web

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

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

Panoramica: che cosa è necessario

Componenti Web: client-side e server-side

Informatica. Prof. A. Longheu. Introduzione a Java

Protocolli e architetture per WIS

Svantaggi delle servlet

RMI Remote Method Invocation

Visualizzazione ordini in MyShopDB

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

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

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

Gestire le sessioni con le Servlet

Strumenti per la programmazione

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

Telematica II 17. Esercitazione/Laboratorio 6

19. LA PROGRAMMAZIONE LATO SERVER

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di dati

Introduzione al linguaggio Java: Servlet e JSP

Programmazione dei socket con TCP #2

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

Il Web Server e il protocollo HTTP

Laboratorio di Basi di Dati

Il Protocollo HTTP e la programmazione di estensioni Web

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Siti interattivi e dinamici. in poche pagine

Implementazione di MVC. Gabriele Pellegrinetti

Application Server per sviluppare applicazioni Java Enterprise

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

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

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Corso di Applicazioni Telematiche

sito web sito Internet

SERVLET & JSP DISPENSE

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Corso basi di dati Introduzione alle ASP

Flavio De Paoli

GESTIONE DEI PROCESSI

Progetto di Applicazioni Software

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

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

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

Progetto di Applicazioni Software

b) Dinamicità delle pagine e interattività d) Separazione del contenuto dalla forma di visualizzazione

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

Framework di Middleware. per Architetture Enterprise

CORSO DI PROGRAMMAZIONE JAVA

Installazione, configurazione e utilizzo di IIS

Java: Compilatore e Interprete

PRACTICAL DEVELOPMENT OF A WEB SERVICE

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 /

Programmazione Java Avanzata

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

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

Architetture Web I Server Web e gli Standard della Comunicazione

Concetti base. Impianti Informatici. Web application

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Esercitazione 4 JDBC

Programmazione a Oggetti Lezione 10. Ereditarieta

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

APPENDICE A Servlet e Java Server Page

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

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

Database e reti. Piero Gallo Pasquale Sirsi

@2011 Politecnico di Torino. Pag. 1. Architettura distribuita. Architetture Client/Server. Architettura centralizzata. Architettura distribuita

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Транскрипт:

Sviluppo di Applicazioni Web con Java 2 Enterprise Edition Ivan Scagnetto Dipartimento di Matematica e Informatica http://www.dimi.uniud.it/scagnett scagnett@dimi.uniud.it Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-1

Applicazioni Web (Web Application) Sono applicazioni utilizzabili mediante il web browser: l HTML sostituisce la classica GUI. Permettono di eseguire dei programmi su un server. Esempi: Web mail Commercio elettronico Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-2

Java 2 Enterprise Edition E la release di Java che permette di costruire applicazioni Web. Componenti di J2EE: Servlet JSP (Java Server Pages) JDBC (Java DataBase Connectivity) Supporto per XML RMI (Remote Method Invocation) CORBA (Common Object Request Broker Access) JNDI (Java Naming and Directory Interface) JMS (Java Message Service) JavaMail EJB (Enterprise Java Beans) Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-3

Bibliografia Wrox team Professional Java Server Programming J2EE 1.3 Edition Wrox 2001 David Flanagan, Jim Farley, William Crawford Java Enterprise in a Nutshell (2nd Edition) O Reilly 2002 Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-4

Java Servlet Una Java servlet è un estensione del server, ovvero, una classe Java che può essere caricata dinamicamente per estendere le funzionalità del server. Di solito le servlet sono utilizzate nei web server (in modo da fornire un alternativa agli script CGI). Le servlet girano in una JVM sul server, quindi sono sicure e portabili. A differenza delle applet non richiedono alcun supporto per Java nel web browser. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-5

Vantaggi delle Servlet Tutte le richieste alle servlet vengono implementate come thread distinti all interno dello stesso processo: ne derivano efficienza e scalabilità. Le servlet sono portabili: da un sistema operativo ad un altro; da un web server ad un altro (tutti i principali web server supportano le servlet). Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-6

Java Servlet e Web Server Richiesta Servlet B thread JVM Servlet A Web server con Java Servlet Richiesta Servlet B Richiesta Servlet A thread thread Servlet B Servlet C Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-7

Java Servlet: ambito di utilizzo In generale le Java servlet sono utilizzate come rimpiazzamento degli script CGI su un web server. Tuttavia nulla vieta di utilizzare tale tecnologia con altri tipi di server: FTP server, mail server ecc. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-8

Supporto per le Java Servlet Per utilizzare le Java Servlet occorre: JVM; Servlet API (classi javax.servlet e javax.servlet.http), fornite in bundle con il JSDK o incorporate in alcuni web server; un Servlet Engine; le tipologie disponibili sono: standalone; add-on; embeddable. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-9

Standalone Server Engine Si tratta di un server che fornisce un supporto nativo per le Java Servlet. Alcuni esempi sono i seguenti: Sun's Java Web Server ("Jeeves"): http://java.sun.com/products/ World Wide Web Consortium's Jigsaw Server: http://www.w3.org/jigsaw O'Reilly's WebSite Professional: http://website.oreilly.com Netscape's Enterprise Server: http://wp.netscape.com/enterprise/v3.6 Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-10

Application Server Engine Un application server fornisce le primitive lato server per lo sviluppo di applicazioni di tipo enterprise. Fra quelli che supportano le servlet vi sono i seguenti: BEA WebLogic Application Server: http://www.bea.com/framework.jsp?cnt=inde x.htm&fp=/content/products/weblogic ATG's Dynamo Application Server 3: http://www.atg.com/ Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-11

Add-on Servlet Engine Questa tipologia consiste in plug-in che aggiungono il supporto alle servlet per server esistenti e privi di tale supporto. Alcuni fra i più diffusi sono: Java-Apache project's JServ module: http://java.apache.org/ IBM's WebSphere Application Server: http://www.software.ibm.com/webservers/ New Atlanta's ServletExec: http://www.newatlanta.com/ Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-12

Embeddable Servlet Engine Questa tipologia consiste in una piattaforma che supporta le servlet e che può essere inserita in un altra applicazione (il vero server). Alcuni esempi: Sun's JavaServer Engine: http://java.sun.com/products/javaserverengine/ Jef Poskanzer's Acme.Serve: http://www.acme.com/java/software/package- Acme.Serve.html Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-13

Scegliere un servlet engine Non tutti i servlet engine sono uguali. Prima di scegliere un particolare engine, conviene testarlo per vedere se supporta le funzionalità necessarie. La lista dei servlet engine disponibili è mantenuta aggiornata dalla Sun al seguente URL: http://java.sun.com/products/servlet/industry.html Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-14

Caratteristiche delle servlet Portabilità Potenza Efficienza e persistenza Sicurezza Eleganza Integrazione Estendibilità e flessibilità Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-15

Portabilità Essendo scritte in Java e basandosi su un API standard, le servlet sono altamente portabili fra diversi sistemi operativi e diversi server: write once, serve everywhere. Tuttavia la portabilità non è strettamente necessaria: le servlet devono girare solo sul server di sviluppo e produzione (cfr. la necessità di un applet di girare su tutti i client possibili). Le servlet non utilizzano la parte più soggetta ad errori e mal implementata di Java: l AWT. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-16

Potenza Le servlet possono sfruttare tutta la potenza delle API principali di Java: networking, multithreading, manipolazione di immagini, compressione dei dati, connessione a basi di dati, Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-17

Efficienza e persistenza Una volta caricata nella memoria del server, una servlet vi rimane come istanza di un oggetto. Ogni successiva chiamata alla servlet è quindi servita in modo immediato. La permanenza in memoria come istanza di un oggetto permette ad una servlet di mantenere uno stato. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-18

Sicurezza Le servlet ereditano la type safety e meccanismi come il garbage collector direttamente dal linguaggio Java. La mancanza dei puntatori in Java esclude problemi legati alla gestione esplicita della memoria (e.g., memory leak). Il meccanismo delle eccezioni protegge il server dagli errori a run-time (e.g., divisioni per zero). Il Java security manager consente di ottenere un ulteriore livello di sicurezza. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-19

Eleganza La pulizia e modularità del codice delle servlet deriva direttamente dall API delle servlet stessa. Infatti l API contiene molte classi utili per il trattamento dei cookie, della sessione ecc. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-20

Integrazione A differenza degli script CGI, le servlet sono strettamente integrate con il server. Ciò consente di utilizzare il server per compiti come i seguenti: convertire i percorsi dei file, effettuare dei log, controllare le autorizzazioni d accesso, Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-21

Estendibilità e flessibilità L API delle servlet è stata progettata per essere facilmente estesa con nuove funzionalità. Inoltre, le servlet sono flessibili: possono generare una pagina web completa, possono essere incluse in una pagina statica con il tag <SERVLET> (server-side include), la tecnologia Java Server Pages consente di inserire dei frammenti di codice delle servlet direttamente in una pagina statica (come in ASP o PHP). Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-22

Servlet API Le servlet usano le classi e interfacce di due package: javax.servlet (servlet generiche indipendenti dal protocollo); javax.servlet.http (servlet specifiche per il protocollo http). Ogni servlet deve implementare l interfaccia javax.servlet.servlet. Ciò solitamente avviene estendendo: javax.servlet.genericservlet (servlet generiche indipendenti dal protocollo); javax.servlet.http.httpservlet (servlet specifiche per il protocollo http). Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-23

Servlet API Le servlet non hanno il metodo main(). Il server invoca certi metodi specifici in risposta ad una richiesta: service() viene chiamato ogni volta che una richiesta è inoltrata ad una servlet. Una servlet generica deve quindi fare un overriding del metodo service(). Una servlet HTTP invece esegue l overriding dei metodi doget() e dopost(). Il metodo service() in questo caso coordina l inoltro delle richieste ai due metodi precedenti e non deve quindi essere modificato. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-24

La prima servlet: Ciao, mondo! import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class CiaoMondo extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); } } out.println("<html>"); out.println("<head><title>ciao, mondo!</title></head>"); out.println("<body>"); out.println("<strong>ciao, mondo!</strong>"); out.println("</body></html>"); Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-25

Tomcat Il servlet engine che useremo sarà Tomcat: http://jakarta.apache.org/ Installato su latoserver.dimi.uniud.it sulla porta 8080: http://latoserver.dimi.uniud.it:8080 Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-26

Deployment su Tomcat Compilare la servlet, ricordandosi di includere nel classpath (tramite la viariabile d ambiente CLASSPATH oppure l opzione classpath di javac) l archivio servlet-api.jar (o servlet.jar) presente nella directory ($CATALINA_HOME è la directory root dell installazione di Tomcat): $CATALINA_HOME/common/lib Scrivere il deployment descriptor file web.xml. Copiare i file sul server. Fermare e riavviare il servizio. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-27

Deployment su Tomcat $CATALINA_HOME/webapps test WEB-INF web.xml classes/ CiaoMondo.class Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-28

web.xml <?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>primotest</servlet-name> <servlet-class>ciaomondo</servlet-class> </servlet> Il nome deve corrispondere <servlet-mapping> <servlet-name>primotest</servlet-name> <url-pattern>/servlet/primo</url-pattern> </servlet-mapping> </web-app> Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-29

Deployment su latoserver.dimi.uniud.it (I) Ogni utente nella propria home directory (/home/<nome utente>) ha una sottodirectory servlets: drwxr-x--t 2 <nome utente> tomcat 4096 2006-10-10 11:42 servlets Tale directory va usata per rendere disponibili le proprie servlet a Tomcat, copiandovi i relativi file.class e il file web.xml. Se non esistono, creare le directory WEB-INF e WEB- INF/classes: cd ~/servlets; mkdir WEB-INF; mkdir WEB-INF/classes Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-30

Deployment su latoserver.dimi.uniud.it (II) /home/<nome utente> servlets WEB-INF web.xml classes/ CiaoMondo.class Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-31

Deployment su latoserver.dimi.uniud.it (III) Compilare la servlet (dalla directory in cui si è creato il sorgente): javac CiaoMondo.java oppure, se la variabile d ambiente CLASSPATH non è definita correttamente: javac classpath /usr/share/jdk1.5.0_09/jre/lib/servlet-api.jar CiaoMondo.java Spostare il file CiaoMondo.class in ~/servlets/web- INF/classes con il comando mv CiaoMondo.class ~/servlets/web-inf/classes Creare (o copiare) il file web.xml in ~/servlets/web-inf Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-32

Deployment su latoserver.dimi.uniud.it (IV) Accedere a http://latoserver.dimi.uniud.it:8080 e cliccare sul link Tomcat Manager (autenticandosi con user e password forniti a lezione): Tomcat Manager Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-33

Deployment su latoserver.dimi.uniud.it (V) Fra le varie applicazioni gestite dal Tomcat Manager, individuare quella relativa al proprio nome utente, fare clic su Stop e poi su Start (importante: non cliccare Undeploy e non interferire con le applicazioni degli altri utenti). Accedere alla servlet: http://latoserver.dimi.uniud.it:8080/ <nome utente>/servlet/primo Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-34