Programmazione Java Avanzata



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

L architettura MVC (Model- View-Controller) Introduzione

Laboratorio di Basi di Dati

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 server-side: Java Servlet

Implementazione di MVC. Gabriele Pellegrinetti

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

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

Capitolo 4 Pianificazione e Sviluppo di Web Part

Creare un sito Multilingua con Joomla 1.6

Application Server per sviluppare applicazioni Java Enterprise

Server-side Programming: Java servlets Parte II

CORSO DI PROGRAMMAZIONE JAVA

SWIM v2 Design Document

Registratori di Cassa

Framework di Middleware. per Architetture Enterprise

Inizializzazione, Assegnamento e Distruzione di Classi

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

Panoramica: che cosa è necessario

Alcuni Design Pattern in Java

Architettura MVC-2: i JavaBeans

Programmazione Java Avanzata

1 JSPDynPage, componenti portale e Java Server Pages

Lezione 1 Introduzione

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

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

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

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

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

Gestione Risorse Umane Web

Eclipse e Subversion

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

J2EE (o JEE): Framework Java per lo sviluppo di applicazioni WEB Enterprise, che vivono in rete e che siano accessibili attraverso browser.

19. LA PROGRAMMAZIONE LATO SERVER

Java Web Services. Uso di Eclipse e Apache Axis

I file di dati. Unità didattica D1 1

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Concetto di Funzione e Procedura METODI in Java

Tener traccia del client

Java: Compilatore e Interprete

Programmazione Java Avanzata Spring - JDBC

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

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

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

1 Applicazione J2EE sul SAP WAS con SAP NWDS

PROGETTAZIONE E SVILUPPO DI UN. Relatore: Studente: Paolo Merialdo Valerio Barbagallo

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

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

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

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Protezione. Protezione. Protezione. Obiettivi della protezione

MANUALE D USO DELLA PIATTAFORMA ITCMS

Il Sistema Operativo: il File System

File Server Resource Manager (FSRM)

Costruzione del layout in gino cms

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Il Web-Service SDMX dell ISTAT

Lezione n 1! Introduzione"

Introduzione al Linguaggio C

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

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

CREAZIONE DI UN AZIENDA

Componenti Web: client-side e server-side

7.4 Estrazione di materiale dal web

Come modificare la propria Home Page e gli elementi correlati

EXPLOit Content Management Data Base per documenti SGML/XML

RMI Remote Method Invocation

Tutorial web Application

Overview su Online Certificate Status Protocol (OCSP)

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

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Integrazione InfiniteCRM - MailUp

1. Il Client Skype for Business

Compilatore risorse display grafico LCD serie IEC-line

Strutture di accesso ai dati

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Applicazione: GAS - Gestione AcceSsi

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Servizio Amazon CloudFront

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

COMPILAZIONE DI UN APPLICAZIONE. 1) Compilare il file (o i file se più d uno) che contengono il testo del programma. compilatore

Tecnologie di Sviluppo per il Web

L interfaccia utente di Office 2010

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

Network Services Location Manager. Guida per amministratori di rete

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Funzioni in C. Violetta Lonati

MANUALE PARCELLA FACILE PLUS INDICE

ImporterONE Export Plugin Magento

Siti interattivi e dinamici. in poche pagine

sito web sito Internet

Amministrazione Trasparente

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

Mac Application Manager 1.3 (SOLO PER TIGER)

Transcript:

Programmazione Java Avanzata Introduzione a Servlet e Struts 2 Ing. Giuseppe D'Aquì 1

Testi Consigliati Java Enterprise in a nutshell, 3 rd edition (O'Reilly) Struts 2 in Action Brown, Davis, Stanlick (Manning) Capitolo 2 di Struts 2 in Action : [http://www.manning-source.com/books/dbrown/ch02sample.pdf] 2

Servlet Le Servlet sono classi Java che rispondono ad HTTP Request Definiscono delle modalità di risposta (ad esempio, in caso di GET o POST) e poi gestiscono in modo automatico il resto Per esempio, viene mantenuto lo stato nelle variabili di sessione senza che lo sviluppatore debba preoccuparsi

Servlet Una Servlet restituisce, in genere, HTML Anche se può restituire XML o altro Una Servlet viene inizializzata dal server, e, a questo punto, gestisce ogni request in un thread a parte Le Servlet sono definite nella libreria di JavaEE

Servlet... 5

Servlet Container Per eseguire una Servlet è necessario un servlet container Un servlet container usa una Java Virtual Machine per eseguire il codice contenuto in una servlet, su richiesta di un web server Il servlet container ha anche altre responsabilità: Gestisce le sessioni utente Gestisce il caricamento delle classi corrette Configurazione delle servlet 6

Servlet Container Tomcat è un famoso Servlet Container Implementa le Servlet API Liberamente utilizzabile e gratuito 7

Gestione delle Servlet 8

Tomcat-Eclipse Per semplificare lo sviluppo, ci sono diversi modi per controllare Tomcat attraverso Eclipse Tomcat Plugin [http://www.eclipsetotale.com/tomcatplugin.html] Eclipse Plugins JST (J2ee Standard Tools) WTP (Web Tools Platform) 9

Deployment WAR L'installazione di una applicazione in un servlet container prevede la copia dei file compilati e della configurazione in una specifica directory Operazione detta Deployment Si possono creare dei pacchetti che contengono l'intera applicazione: sono chiamati WAR (Web Archive) Copiando solo il WAR, il servlet container si occupa di decomprimerlo e installare i file 10

Esempio Servlet... 11

Esempio Servlet - persistenza Nota bene: la persistenza qui è intesa come dati che permangono tra una http request e un'altra 12

Struttura di una web application Una directory molto importante è WEB-INF Contiene: le nostre classi compilate (WEB-INF/classes) Eventuali librerie aggiuntive (WEB-INF/lib) Eventuale codice sorgente (WEB-INF/src) La configurazione (WEB-INF/web.xml) Tutte le altre directory rappresentano la document root del server web Cioè i file sono direttamente raggiungibili 13

Servlet Context Un servlet context è semplicemente il percorso in cui sono installate una o più servlet Le servlet in un context hanno un ambiente che è isolato dalle operazioni delle servlet di altri context 14

Cookies Scrivere String userid = createuserid( ); Cookie c = new Cookie("userid", userid); resp.addcookie(c); Leggere Cookie[] cookies; cookies = req.getcookies( ); String userid = null; for (int i = 0; i < cookies.length; i++) if (cookies[i].getname( ).equals("userid")) userid = cookies[i].getattribute( ); 15

JavaServer Pages Scrivere una pagina HTML tramite output di una servlet è complicato e fa perdere tempo Soprattutto può farlo solo uno sviluppatore Si usano in genere dei Templating Engine (vedi Template View) JSP è uno di questi 16

JSP e Server Un file JSP viene compilato come servlet alla prima richiesta Le richieste successive verranno gestite dalla servlet appena compilata Posizione dei file Come richiamarli da url 17

JSP e Tomcat Posizione dei file I file JSP vanno nella document root (/) del servlet context, o in una sottodirectory Vengono mappate come URL in base alla loro posizione fisica 18

JSP: Esempio 1 Output data 19

JSP: Esempio 2 if 20

JSP compilate come Servlet... 21

Struts 2 Struts 2 è un framework per lo sviluppo di applicazioni web in Java Implementa il pattern MVC È stato completamente riscritto nella versione 2, a partire da un framework chiamato WebWorks Possiede concetti tipici di altri cosiddetti lightweight framework Convention over configuration Gestione dei cross-cutting concerns 22

MVC di Struts 2 23

MVC di Struts 2 Controller: FilterDispatcher Model: Action View: Result 24

FilterDispatcher È un Front Controller Associa ad ogni request una Action È una servlet che fa da filtro ad ogni request, smistando l'esecuzione delle azioni È necessario configurarlo, mappando le URL alle Action corrispondenti 25

FilterDispatcher: configurazione Ci sono due modi per configurare il controller: XML Java Annotations 26

Action Il Model è una scatola vuota che contiene la logica del dominio e i dati, ma la Action è il punto di accesso Il FilterDispatcher la invoca, passandole i dati della request Alla fine delle operazioni di business logic, i risultati vengono inviati al componente View 27

Result La View in una web application è una pagina web Struts supporta una gerarchia di View possibili, che implementano l'interfaccia Result JSP, Velocity, Freemarker, XSLT... Ogni Action può scegliere tra diverse result 28

Una request gestita da Struts 2 29

Una request gestita da Struts 2 Intorno ai grossi gestori ci sono componenti non meno importanti: Interceptors ValueStack OGNL ActionContext 30

Interceptors Gli interceptor modificano il comportamento del controller Aggiungono funzionalità generali, per l'intera applicazione Sono in serie, funzionano da filtro o, meglio, da Decorators Vengono eseguiti prima del processing della request, e subito dopo Non tutti gli interceptor svolgono funzioni sia in un verso che nell'altro 31

Interceptors Esempio: Logging È una funzionalità che vale per ogni Action, ma non vogliamo reimplementarla ogni volta Altri esempi: Conversione di tipo Data validation File upload Struts 2 Ha già una grossa libreria di Interceptors standard 32

ValueStack È un'area usata come interscambio di dati tra i vari componenti che gestiscono una request Invece di passare i dati da un oggetto all'altro, si usa il ValueStack come deposito centralizzato I dati vengono trasferiti qui durante l'inizio della request, manipolati dalla Action e infine letti dalla Result 33

OGNL Object Graph Navigation Language È un linguaggio che permette di usare riferimenti a oggetti sul ValueStack 34

ActionContext Contiene tutti i dati riguardanti il processing di una request ValueStack e un certo numero di oggetti usati internamente da Struts È implementato tramite ThreadLocal, ovvero sono dati locali per un certo thread (invisibili per gli altri) Ogni request è gestita da un thread a sé, dall'inizio alla fine, quindi ActionContext è sempre presente 35

ActionContext Anche se è possibile accedere all'actioncontext e al ValueStack direttamente, non si dovrebbe È considerata buona pratica utilizzare, invece, OGNL 36

Esempio 1: Hello World... 37

Configurazione del web.xml Il FilterDispatcher deve essere impostato tramite il tag <filter> Il tag <filter> ha una funzionalità simile a <servlet>, ma permette di filtrare le url, ad esempio per estensione In questo modo possono esistere più servlet/filter che cooperano 38

Configurazione: struts.xml Contiene la configurazione del framework Si possono settare proprietà Si possono definire le Action e le corrispondenti Result La configurazione può essere in parte gestita da file di proprietà 39

Modularità della Configurazione La configurazione è modulare Si può suddividere la configurazione in più file XML, richiamandoli con il tag <include> 40

La classe Action Praticamente non c'è codice Java, eccettuato quello nei file JSP Struts in automatico crea un oggetto Action vuoto per ogni <action> che non ha oggetti associati L'esecuzione della Action in questo caso si limita a passare il controllo al JSP predefinito 41

Creare una nuova Action Le Action vuote sono rare, perché non contengono business logic Si possono creare action implementando l'interface Action, oppure rispettando dei vincoli di convenzione Si deve implementare il metodo astratto execute() 42

Scelta della Result View Come si sceglie quale sarà la View da renderizzare dopo la Action? Il metodo execute() restituisce una stringa Struts confronta la stringa con quelle definite nella configurazione XML, associate a pagine JSP 43

Componenti della URL 44

Dati della request nella Action Struts sposta in automatico i parametri della request, ad esempio i dati inseriti in una form, alla Action Tutto avviene tramite JavaBeans Properties 45

JavaBeans Sono normali classi che rispettano una determinata convenzione: Hanno un costruttore senza argomenti Sono serializzabili Le variabili membro (proprietà) devono essere accessibili tramite funzioni di get() e set(), con nomi convenzionali getname(), setname(), getrealname(), setrealname().. 46

Dati della request nella Action (2) Ogni Action è un JavaBean che mantiene dentro sé: Dati della logica applicativa Dati provenienti da una http request Il riempimento dei secondi lo fa in automatico Struts, se seguiamo le convenzioni la proprietà deve avere lo stesso nome definito nella casella di input (<s:textfield>) 47

Dati della Action nella View Il passaggio dei dati alla View avviene allo stesso modo Usiamo il tag <s:property> per accedere a una proprietà della nostra Action 48

E il ValueStack? Come già detto, non usiamo il ValueStack direttamente La Action con tutti i suoi dati viene copiata nel ValueStack Accediamo alle sue proprietà tramite espressioni OGNL Nel nostro caso sono semplici nomi 49

Passaggio dei dati 50