Softsmith Infotech Apache Struts Technology A MVC Framework for Java Web Applications.
7 - Framework Apache Struts
-
Upload
andreatrogolo8964 -
Category
Documents
-
view
282 -
download
0
Transcript of 7 - Framework Apache Struts
Il framework Apache StrutsA.A. 2011-12
IntroduzioneLarchitettura MVC consente di separare la logica dalla presentazione Facilit di
Sviluppo Test Manutenzione dellapplicazione Estensione
2
Introduzione
Il framework open source Struts 2 stato introdotto nel 2005 Implementa il pattern MVC basato sul framework OpenSymphony WebWork 2.2 http://struts.apache.org/
Aggiunge delle funzionalit mancanti nella versione 1 Estensibilit Supporto ad AJAX Internazionalizzazione e localizzazione Gestione della navigazione nelle pagine Validazione dei campi di input Layout consistente
3
Struts 2: Caratteristiche generali
Il modello, le viste e il controllore sono implementati dalle interfacce e classi Action, Result e FilterDispatcher
Il controllore determina lazione da invocare in base allURL contenuta nella richiesta ed al file struts.xml Che definisce le corrispondenze richiesta/azione
Alla ricezione di una richiesta, viene istanziato loggetto Action corrispondente Ed eseguito il metodo execute() Questo restituisce un stringa che sar utilizzata per determinare quale vista selezionare
Le viste possono essere implementate utilizzando differenti tecnologie JSP, Velocity Template, Freemaker,
4
Struts 2: Caratteristiche generali
Il framework opera grazie alla presenza di un filter dispatcher, che ha il compito di Esaminare le richieste Inoltrarle ai controllori Selezionare la vista da mostrare
Un insieme di componenti, chiamati intercettatori, supportano tali operazioni automatizzando vari compiti
5
Struts 2: Caratteristiche generali
Le URI contenute nelle richieste vengono mappate sulle singole azioni usando le informazioni contenute nel file struts.xml Eventuali cambiamenti non comportano la ricompilazione dellapplicazione
Se la richiesta contiene dei parametri, questi sono memorizzati dal framework nellAction relativa, prima dellinvocazione del metodo execute() Utilizzando i metodi setter da essa esposti, che devono avere il nome corrispondente al parametro
6
Struts 2: Caratteristiche generali
Si possono validare i valori in ingresso ad unazione e rimandare lutente sul campo del form sul quale fallito il controllo Attraverso annotazioni o un file xml per la validazione
Il dispatcher, dopo aver esaminato il risultato dellazione, pu intraprendere diverse azioni Mostrare una pagina jsp, generare un pdf, mandare un messaggio di errore
7
8
Struts 2: Flusso di funzionamentoFramework ActionInvocation - invoke()Si Lo stack contiene un nuovo interceptor? Si No
Lelaborazione della richiesta pu continuare? No
Chiamata dellintercettatore
Chiamata dellazione Generazione del risultato
Render del risultato
Post elaborazione
9
Struts 2: Flusso di funzionamento
Il controllore riceve la richiesta dellutente e determina lazione da invocare Il framework crea unistanza dellazione richiesta e seleziona gli intercettatori corrispondenti Essi validano i parametri ricevuti, effettuano le conversioni di tipo eventualmente necessarie, popolano loggetto Action
Ogni volta che viene chiamato il metodo invoke(), listanza di ActionInvocation consulta il proprio stato ed esegue il prossimo intercettatore, attraverso il metodo intercept()
10
Struts 2: Flusso di funzionamento
Lintercettatore, a sua volta, richiama il metodo invoke() dellistanza di ActionInvocation Dopo aver chiamato tutti gli intercettatori, viene invocata lazione e generato il risultato Gli intercettatori possono essere chiamati anche dopo la generazione del risultato, per rielaborarne il contenuto
Infine, avviene la presentazione dei risultati
11
Filter Dispatcher
il cuore del controllore del framework Verifica lURI in ingresso e determina quale azione invocare e quale classe azione Java instanziare
Quello di default ha il seguente nome org.apache.struts2.dispatcher.FilterDispatcher
12
Filter Dispatcher
Deve essere registrato nel descrittore di sviluppo dellapplicazione (web.xml) struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
13
Gli intercettatori
Alcuni compiti del controllore vengono affidatati a sotto-componenti, gli intercettatori Possono essere aggiunti o rimossi semplicemente modificando il file di configurazione di struts Non occorre ricompilare lapplicazione
14
Gli intercettatori
Di seguito vengono elencati e descritti gli intercettatori pi diffusi I nomi tra parentesi sono utilizzati per registrare gli stessi nel file di configurazione
Alias (alias) Converte parametri simili che possono avere nomi differenti tra le richieste
Chaining (chain) Se il risultato di tipo Chain, vengono resi disponili le propriet della precedente azione a quella corrente
15
Gli intercettatori
Checkbox (checkbox) Gestisce le checkbox allinterno di un form, in modo tale che quelle non spuntate possano essere rilevate
Cookie (cookie) Aggiunge un cookie allazione corrente
Conversion Error (conversionError) Aggiunge gli errori legati alla conversione dei parametri allelenco degli errori presenti nei campi dellazione
Create Session (createSession) Crea un oggetto HttpSession se questo non esiste gi per lutente corrente
16
Gli intercettatori
Debugging (debugging) Supporto al debugging
Execute and Wait (execAndWait) Esegue unazione che richiede unelaborazione di tempo lunga in background e nel frattempo manda allutente una pagina intermedia di attesa
Exception (exception) Mappa le eccezioni a un risultato
File Upload (fileUpload) Supporto allupload di file17
Gli intercettatori
I18n (i18n) Supporto allinternazionalizzazione e alla localizzazione
Logger (logger) Fornisce in uscita il nome dellazione
Message store (store) Salva e recupera dalla sessione i messaggi o gli errori delle azioni o gli errori dei campi, per gli oggetti Action che implementano linterfaccia ValidationAware
18
Gli intercettatori
Model Driven (modelDriven) Supporto per il pattern model driven per tutte le classi azione che implementano ModelDriven
Parameters (params) Popola le propriet dellazione con i parametri della richiesta
Scope (scope) Fornisce un meccanismo per salvare lo stato dellazione nella sessione o nel contesto dellapplicazione
19
Gli intercettatori
Servlet Config (servletConfig) Fornisce laccesso alle mappe che rappresentano gli oggetti di tipo HttpServletRequest e HttpServletResponse
Static Parameters (staticParams) Mappa le propriet definite allinterno del file struts.xml sulle propriet dellazione
Roles (roles) Supporta azioni basate su ruoli
Timer (timer) Fornisce in uscita il tempo che stato richiesto per lesecuzione dellazione
20
Gli intercettatori
Token (token) - Token Session (tokenSession) Verifica che sia presente un token valido nella richiesta per evitare linvio ripetuto delle stesse informazioni
Validation (validation) Supporto alla validazione dei campi di input (specificati tramite il file action-validation.xml)
Workflow (workflow) Chiama il metodo validate() allinterno della classe azione e restituisce INPUT in caso di errore
Parameter Filter (n/a) Rimuove i parametri dalla lista di quelli disponibili per lazione
Profiling (profiling) Supporta la profilatura dellazione
Prepare (prepare) Se lazione implementa linterfaccia Preparable, invoca il metodo prepare() prima di invocare il metodo di esecuzione vero e proprio
21
Lo stack di default
Struts2 definisce il seguente stack di default1. 2. 3. 4. 5. 6. 7. 8. 9. 10. exception servletConfig prepare checkbox multiselect actionMappingParams params conversionError validation workflow22
Le azioni
Le azioni permettono di eseguire operazioni allinterno dellapplicazione Sono costituite da classi java dotate di metodi e propriet, secondo le seguenti regole Una propriet deve avere i metodi get e set Una propriet pu essere di qualunque tipo La conversione tra tipi String e i tipi elementari avviene automaticamente Deve avere un costruttore senza argomenti Deve avere almeno un metodo
Ad essa si possono associare azioni multiple Viene creata unistanza di azione ad ogni richiesta HTTP Non viene creato un oggetto HttpSession
23
Le azioni
La classe azione normalmente implementa linterfaccia com.opensymphony.xwork2.Action Direttamente o estendendo la classe ActionSupport
lecito dichiarare azioni che dispongano di un metodo execute() ma che non implementino formalmente linterfaccia
24
Le azioni
Attraverso il metodo statico ActionContext.getContext(), si pu accedere a vari tipi di informazione I parametri della richiesta Gli attributi della richiesta Gli attributi della sessione Gli attributi della applicazione Gli errori rilevati Lo stack dei valori OGNL25
I risultatiUn metodo dellazione ritorna una stringa che determina quale risultato eseguire Un risultato deve avere un nome e un tipo
Il nome di default success Il tipo di default dispatcher, che ridirige il browser a una pagina jsp
26
I risultati
Di seguito, vengono elencati e descritti i tipi di risultati
I nomi tra parentesi sono utilizzati per registrare gli stessi nel file di configurazione
Chain (chain)
Permette di concatenare i risultati precedenti con quelli attuali Consente di effettuare il forward verso una pagina JSP
Dispatcher (dispatcher)
FreeMarker (freemarker)
Utilizzato per lintegrazione con FreeMarkerUtilizzato per rispondere al browser con header http
HttpHeader (httpheader)
27
I risultati
Redirect Action(redirect-action) Utilizzato per redirigere il risultato ad unaltra azione
Stream (stream) Utilizzato per mandare un InputStream al browser
Velocity (velocity) Utilizzato per lintegrazione con Velocity
XSLT (xslt) Utilizzato per lintegrazione per XML/XSLT
PlainText(plaintext) Utilizzato per mandare del testo in chiaro, generalmente per mostrare il sorgente di una pagina JSP
28
File di configurazione
Il file struts.xml definisce tutti gli aspetti dellapplicazione Include le azioni, gli intercettatori e i possibili risultati Pu ereditare le configurazioni di default del framework Sono incluse nel file del framework struts2-core-VERSION.jar
Il file default.properties contiene le impostazioni che vengono utilizzate in tutte le applicazioni struts Anchesso incluso nel package struts2-core-VERSION.jar File opzionale, nel caso in cui vanno bene le propriet di default
29
Il file struts.xml
Lelemento root il tag Le azioni possono essere raggruppate in package Questultimo deve avere un attributo name e un namespace Il namespace, se non presente, quello di default / Per invocare unazione di un package non presente in un namespace non di default, si deve specificare il namespace nellURI /context/namespace/actionName.action
30
Il file struts.xml
I package possono essere suddivisi in file distinti Si utilizza il tag Ogni tag deve avere lo stesso elemento DOCTYPE e un elemento root struts
Unazione posizionata allinterno di un elemento package Deve avere un attributo name Se non si specifica la classe di azione verr istanziata la classe di azione di default Si pu specificare anche il metodo da eseguire quando lazione viene invocata Se non specificato, il metodo di default execute
31
Il file struts.xml
Lelemento un sotto elemento di Corrisponde al valore di ritorno di un metodo di unazione Unazione pu ritornare differenti risultati, quindi avere differenti elementi Se il risultato restituito da unazione non presente nel file di configurazione Viene controllato se il esso presente nellelemento global-results, questultimo contenuto allinterno del package In caso contrario, viene lanciata un eccezione
Lattributo name, se omesso, assume il valore success Lattributo type specifica il tipo di risultato di ritorno, se omesso assume il valore Dispacher