La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Corso Framework Struts - Grivet Chin Franco Corso Framework Struts (1) 2 Elaborazione di Franco Grivet Chin Data 16/06/2009.

Presentazioni simili


Presentazione sul tema: "1 Corso Framework Struts - Grivet Chin Franco Corso Framework Struts (1) 2 Elaborazione di Franco Grivet Chin Data 16/06/2009."— Transcript della presentazione:

1 1 Corso Framework Struts - Grivet Chin Franco Corso Framework Struts (1) 2 Elaborazione di Franco Grivet Chin Data 16/06/2009

2 2 Corso Framework Struts - Grivet Chin Franco Framework Framework (infrastruttura) è una struttura di supporto su cui un software può essere organizzato e progettato. Ha le seguenti caratteristiche E una piattaforma che velocizza la costruzione di applicazioni del dominio a cui si rivolge grazie al riuso della soluzione architetturale che ne costituisce la struttura Risparmiare allo sviluppatore la riscrittura di codice già steso in precedenza per compiti simili Si estendono le classi del framerwork e/o se ne implementano le interfacce; sono i componenti del framework che hanno la responsabilità di controllare il flusso elaborativo. sono le classi del framework che invocano il nostro codice applicativo e non viceversa come nel caso delle librerie di classi Utilizza i design pattern

3 3 Corso Framework Struts - Grivet Chin Franco Framework VS Librerie Una libreria contiene funzioni o routine (metodi) che lapplicazione può invocare Framework fornisce componenti generici che collaborano tra loro che possono essere estesi (punti di estensione) per fornire nuove funzionalità Lo sviluppatore non scrive codice per coordinare le componenti. Losviluppatore deve determinare le componenti che aderendo alla logica collaborativa del framework verranno coordinate da quest'ultimo Il framework assume il controllo della applicazione e non il contrario!

4 4 Corso Framework Struts - Grivet Chin Franco Open source framework Sono stati tra i principali elementi di innovazione nelle architetture web negli ultimi anni Hanno rappresentato il principale veicolo dellesperienza collettiva degli sviluppatori in termini di design & architectural pattern, idioms,best practices Rispetto ai framework in-house (realizzati ad hoc) hanno una contribuzione di sviluppo più ampia e quindi una maggiore velocità di convergenza alla soluzione migliore per il dominio specifico Per uno sviluppatore/architetto la competenza su framework e librerie Open Source è fondamentale

5 5 Corso Framework Struts - Grivet Chin Franco Vantaggi di un framework Disegno architetturale Un framework è fondato su un disegno architetturale valido, in quanto il suo codice è scritto in base alle best-practices della tecnologia in uso. Riduzione dei tempi di progetto Lo sviluppatore deve implementare esclusivamente la logica applicativa potendo risparmiare le energie e il tempo necessari alla scrittura di componenti infrastrutturali. Semplificazione dello sviluppo Semplifica lo sviluppo applicativo perché fornisce tutta una serie di componenti che risolvono la gran parte dei compiti comuni a tutte le applicazioni web J2EE (controllo del flusso, logging, gestione messaggi di errore, custom tags per la presentation logic, internazionalizzazione, validazione dei dati, etc..)

6 6 Corso Framework Struts - Grivet Chin Franco Scelta del framework Maturità del progetto Sconsigliabile adottare un framework che sia in una fase iniziale di sviluppo e che sia poco adottato nella comunità degli sviluppatori e quindi poco testato sul campo in progetti reali. Documentazione Verificare che la documentazione sia ricca e ben fatta. Questo facilita la risoluzione dei problemi che si incontrano nella realizzazione dell'applicazione e la comprensione del suo funzionamento. Validità del disegno architetturale Verificare che sia disegnato correttamente e quindi che siano adottati i design-pattern e le best-practises della tecnologia di riferimento. Adozione degli standard Un framework deve essere fondato sui componenti standard della tecnologia di riferimento. Evitare framework conuso di specifici tool di sviluppo o un modello troppo indirizzato ad uno specifico caso applicativo Estensibilità Deve essere possibile estenderne le funzionalità per adattarlo alle alle proprie esigenze.

7 7 Corso Framework Struts - Grivet Chin Franco Web Application modello 2 E il modello utilizzato per lo sviluppo delle applicazioni Java/J2EE prima delavvento dei framework. Si contrappone al modello 1 in cui si aveva solo servlet e Model o peggio JSP e model Browser Web / Servlet Container JSP Richiesta Risposta Servlet dispatch Business Model

8 8 Corso Framework Struts - Grivet Chin Franco Web Application Framework un sistema software che fornisce struttura e comportamento generalizzati di task e workflow tipici delle applicazioni web. Es: gestione della navigazione (MVC), gestione dellaccesso ai dati (DAO), … Nella vita reale per la realizzazione di web application è tipico lutilizzo congiunto di diversi framework open source specializzati in aspetti specifici Ci concentreremo su alcuni di quelli più diffusi che lavorano bene insieme 1.Struts (1) 2 (per la parte View e Controller) 2.Spring (per lIOC – Inversion of Control) 3.Hibernate (per la parte di Model – ORM ) 4.Jquery ( per la parte di front-end Web 2.0, Ajax )

9 9 Corso Framework Struts - Grivet Chin Franco Struts storia STRUTS 1.x.x Framework open source per lo sviluppo di applicazioni web su piattaforma J2EE. Progetto inizialmente sviluppato come sotto-progetto di Apache Jakarta ma ora è divenuto un progetto a sé. Struts estende le Java Servlet, aiutando all'utilizzo del pattern Model- View-Controller Ideato da Craig McClanahan donato alla Apache Software Foundation nel maggio del 2000.

10 10 Corso Framework Struts - Grivet Chin Franco STRUTS 1 e 2 Struts 1 E un insieme di classi ed interfacce che costituiscono l'infrastruttura per costruire web application Java EE conformi al design pattern Model 2 (MVC) Il suo ideatore è Craig McClanahan ed è stato donato alla Apache Software Foundation nel maggio del 2000 da parte di IBM. E uno dei web application framework più diffusi al mondo Struts 2 Nonostante il nome, Struts 2 non è solo una nuova release di Struts è un framework completamente nuovo basato su WebWork Sono state introdotte caratteristiche non presenti in Struts grazie ai feedback di migliaia di sviluppatori Struts e Struts 2 sono piuttosto diversi è importante conoscerli entrambi perchè il primo è ancora molto diffuso

11 11 Corso Framework Struts - Grivet Chin Franco Struts1 class diagram

12 12 Corso Framework Struts - Grivet Chin Franco Struts 1 sequence diagram

13 13 Corso Framework Struts - Grivet Chin Franco Struts1 componenti principali Struts-config.xml fornisce alla ActionServlet, in base ai parametri della URL La Action da invocare La pagina JSP a cui inoltrare la richiesta ActionServlet: il controller di Model 2 Action: il Model di Model 2 (Classe base per le classi action ) ActionForm: delle classi che contengono i dati inviati da un form Le classi action sono responsabili di Interfacciarsi con il layer sottostante (es: EJB, DAO, …) Recuperare i dati da un ActionForm da presentare alla View e inserirli in un contesto (request, session, application) Le pagine JSP sono responsabili di Recuperare i dati da visualizzare dal contesto Visualizzare i dati

14 14 Corso Framework Struts - Grivet Chin Franco Esempio di Struts-config per struts 1

15 15 Corso Framework Struts - Grivet Chin Franco Struts 2 La versione 2 di Struts risulta profondamente rinnovata rispetto alla precedente.rispetto alla precedente In realtà il progetto è nato con il nome di WebWork, che non ha nessun legame particolare con la versione 1 di Struts, per poi passare, dopo una prima fase di analisi e sviluppo, al nome Struts 2. Per questo motivo la migrazione dalla versione 1 alla versione 2 non è semplice. Utilizzando il nuovo framework è possibile scrivere software facilmente manutenibile, solido e aderente al pattern MVC.pattern MVC La versione attualmente stabile è la Il sito ufficiale del progetto è struts.apache.org, dal quale è possibile scaricare sia le librerie, che la documentazione. struts.apache.org

16 16 Corso Framework Struts - Grivet Chin Franco Struts 2-. Servlet Filter La Servlet API a partire dalla versione 2.3 mette a disposizione i Servlet Filters. Possono essere utilizzati per moltissimi scopi, alcuni esempi: tracciatura e Logging delle attività utente, localizzazione, compressione dati, autenticazione. Sono delle particolari classi Java che consentono di filtrare le richieste del browser verso le Servlets di una web applications e la risposta della Servlet al browser.

17 Struts 2-. Servlet Filter La filtratura avviene intercettando la richiesta HTTP in modo da poterla manipolare, prima che questa arrivi alla Servlet destinataria o modificando la risposta prima di essere ritornata al browser. Una classe per poter essere utilizzata come filtro deve implementare linterfaccia javax.servlet.Filter, che definisce tre metodi di base: init(FilterConfig fc) doFilter(ServletRequest req, ServletResponse res, FilterChain chain) destroy() 17 Corso Framework Struts - Grivet Chin Franco

18 18 Corso Framework Struts - Grivet Chin Franco Struts 2 in pratica struts org.apache.struts2.dispatcher.FilterDispatcher struts /* index.jsp

19 19 Corso Framework Struts - Grivet Chin Franco Struts 2 differenze con Struts 1 Vediamo in evidenza le differenze principali rispetto alla versione precedente. web.xml Struts: Il controllo viene affidato ad una Servlet. Di default alla ActionServlet ma è possibile definire una Action personalizzata Struts 2: Il controllo viene affidato ad un Filter. Di default al FilterDispatcher ma è possibile definire un Filtro personalizzato URI pattern Struts: Di default viene utilizzato il pattern *.do per identificare una richiesta che la ActionServlet prenderà in carico Struts 2: Di default viene utilizzato il pattern *.action per identificare una richiesta che il FiltroDispatcher prenderà in carico File di configurazione Struts: Di default il nome del file di configurazione è struts-config.xml che va posizionato allo stesso livello del file web.xml Struts 2: Di default il nome del file di configurazione è struts.xml che va posizionato in una directory del classpath

20 20 Corso Framework Struts - Grivet Chin Franco Struts 2 differenze con Struts 1 Mapping delle Action Struts: Il mapping di una Action viene definito nel file di configurazione mediante il tag action-mapping Struts 2: Il mapping di una Action viene automaticamente generato dalla concatenazione "package-nome della action", entrambi definiti nel file di configurazione Proprietà di una Action Struts: Le proprietà necessarie ad una Action vengono definite in una classe ActionForm, nella quale occorre definire anche i metodi get e set Struts 2: Le proprietà necessarie vengono definite direttamente nella Action nella quale occorre definire anche i metodi get e set Action Struts: Una Action deve estendere la classe org.apache.struts.action.Action Struts 2: Una Action deve implementare l'interfaccia com.opensymphony.xwork2.Action oppure estendere la classe com.opensymphony.xwork2.ActionSupport che, a sua volta, è un'implementazione di Action

21 21 Corso Framework Struts - Grivet Chin Franco Struts 2 differenze con Struts 1 Metodo execute Struts: Il metodo execute di una Action restituisce un ActionForward Struts 2: Il metodo execute di una Action restituisce una stringa. Il Controller stabilisce, in base alla stringa restituita, qual è la vista da richiamare TagLibrary Struts: Sono disponibili diverse taglibrary, suddivise per tipo di argomento trattato (logic, bean, HTML) Struts 2: È disponibile un'unica taglibrary che mette a disposizione sia operazioni di logica che di rendering HTML

22 22 Corso Framework Struts - Grivet Chin Franco Struts 2

23 23 Corso Framework Struts - Grivet Chin Franco Struts 2 in pratica Prima di tutto aggiungiamo le seguenti librerie al nostro progetto, incluse nello zip completo scaricabile dal sito ufficiale del progetto: commons-logging jar freemarker jar ognl jar struts2-core jar xwork jar

24 24 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Struts 2 in pratica Nel file web.xml, oltre alle usuali dichiarazioni, è necessario definire un filtro al quale vengono affidate tutte le richieste. Questo filtro rappresenta il Controller dell'applicazione. Naturalmente è necessario indicare anche l'URL al quale esso risponde. Nel nostro esempio, utilizziamo la classe di default messa a disposizione dal framework, org.apache.struts2.dispatcher.FilterDispatcher Nel nostro esempio il filtro viene invocato su tutte le URL (/*) che hanno come suffisso l'estensione.action (default). È possibile comunque configurare diversamente il filtro, indicando un pattern diverso da quello di default.

25 25 Corso Framework Struts - Grivet Chin Franco Struts 2 in pratica struts org.apache.struts2.dispatcher.FilterDispatcher struts /* index.jsp

26 26 Corso Framework Struts - Grivet Chin Franco Struts 2 in pratica Ogni richiesta intercettata dal Controller viene inoltrata ad una Action, una classe Java che implementa l'interfaccia com.opensymphony.xwork2.Action. L'unico metodo da dover implementare è execute(), che viene invocato automaticamente dal framerwork nel momento in cui il Controller inoltra la richiesta alla Action. È possibile anche estendere la classe com.opensymphony.xwork.ActionSupport, un'implementazione di Action, dalla quale è possibile ereditare un insieme di metodi e attributi di grande utilità nello sviluppo, quali gestione degli errori, dei messaggi e così via.

27 Struts 2 Anche la versione 2 di Struts, così come il suo predecessore, prevede un file di configurazione: struts.xml. Il file deve essere posizionato nel classpath della webapp. Il posto più appropriato ove inserirlo è in /WEB-INF/classes/struts.xml. Tale file contiene la definizione di tutte le Action disponibili nel sistema. Ciascuna Action è identificata da un package, da un nome univoco e da uno o più destinazioni (result). Il result verrà utilizzato dal Controller per decidere qual è la vista appropriata da richiamare. 27 Corso Framework Struts - Grivet Chin Franco

28 28 Corso Framework Struts - Grivet Chin Franco Struts 2 in pratica /menu/Menu.jsp

29 29 Corso Framework Struts - Grivet Chin Franco Struts 2 in pratica Constant serve per impostare prorietà del framework Il valore devMode=true abilita automaticamente un livello di informazioni di debugging e anche il ricaricamento delle varie risorse a ogni request Il processo di mapping è semplice: + server:porta + /contesto + / package namespace + / azione.action i package dividono le action in zone logiche e gli associano un path

30 Struts 2 in pratica Ruolo delle azioni Racchiudere la logica di business public String execute() { setCustomGreeting( GREETING + getName() ); return "SUCCESS"; } Permettere il data transfer private String name; public String getName() {return name;} public void setName(String name) {this.name = name;} Restituire una stringa per il routing del result (view) /chapterTwo/HelloWorld.jsp /chapterTwo/Error.jsp 30 Corso Framework Struts - Grivet Chin Franco

31 Struts 2 in pratica Packages I package di Struts 2 sono simili concettuamente ai package di Java. Forniscono un meccanismo per raggruppare le azioni in base a funzionalità comuni o a dominio. NOTA: E possibile avere lo stesso namespace in più di un package In tale caso le azione dei due package mappano lo stesso namespace. 31 Corso Framework Struts - Grivet Chin Franco

32 Struts 2 in pratica Packages Namespace di default: è quello che ha come namespace ; se unaction viene chiamata su un namespace e non viene trovata, viene ancora cercata nel namespace di default Namespace di root: è quello che ha come namespace /; viene trattato come tutti gi altri namespace extends: è fondamentale per fare in modo che un package erediti la logica (interceptor, etc.) ad esempio del package già presente che si chiama struts-default che dichiara moltissimi componenti standard (si trova nel struts2-core.jar) ad esempio linterceptor che si ocupa del popolamento dei parametri della action 32 Corso Framework Struts - Grivet Chin Franco

33 Struts 2 in pratica Action Le Action normalmente implementano l'interfaccia com.opensymphony.xwork2.Action oppure estendono la classe com.opensymphony.xwork2.ActionSupport che, a sua volta, è un'implementazione di Action Nota: potrebbe essere sufficiente avere una classe normale che espone un metodo execute conforme La Action Interface fornisce anche costanti: public static final String ERROR "error" public static final String INPUT "input" public static final String LOGIN "login" public static final String NONE "none" public static final String SUCCESS "success" 33 Titolo Presentazione / Data / Confidenziale / Elaborazione di...

34 Struts 2 in pratica Action Ad esempio la pass-through action: /chapterOne/NameCollector.jsp Non specifica la classe ; Struts2 fonisce ua action di default anche se non lo specifichiamo con un metodo execute vuoto che restituisce SUCCESS che è anche il default dellattributo name de tag result (convention over configuration) 34 Titolo Presentazione / Data / Confidenziale / Elaborazione di...

35 Struts 2 in pratica Validazione di base La classe ActionSupport fornisce una validazione di base, poichè implementa Validateable che lavora con il DefaultWorkflowInterceptor Quando il workflow interceptor scatta, cerca un metodo validate() sulla action da invocare. public class Register extends ActionSupport { …. public void validate(){ PortfolioService ps = getPortfolioService(); if ( getPassword().length() == 0 ){ addFieldError( "password", "Password is required.") ); }…..} Dopo lesecuzione del validate il controllo ritorna al workflow interceptor che veirifica se ci sono messagi di errore (il metodo è void); se sì termina lesecuzione della action e torna allinput form 35 Titolo Presentazione / Data / Confidenziale / Elaborazione di...

36 Struts 2 in pratica Validazione di base Linterfaccia ValidationAware fornisce I metodi per memorizzare e recuperare I messaggi. Literfaccia è implementata da ActionSupport addFieldError ( String fieldName, String errorMessage ) addActionError ( String errorMessage ) Nel stut.xm si defiisce la view a cui si deve ritornare, ovvero il result con name input /chapterThree/RegistrationSuccess.jsp /chapterThree/Registration.jsp 36 Titolo Presentazione / Data / Confidenziale / Elaborazione di...

37 Struts 2 in pratica Validazione di base E possibile utilizzare un file di properties per recuperare i messaggi di errore public void validate(){ PortfolioService ps = getPortfolioService(); if ( getPassword().length() == 0 ){ addFieldError( "password", getText("password.required") ); } 37 Titolo Presentazione / Data / Confidenziale / Elaborazione di...

38 Struts 2 in pratica Object-backed JavaBeans properties public String execute(){ getPortfolioService().createAccount( user ); return SUCCESS; } private User user; public User getUser() { return user; } Nel Form 38 Titolo Presentazione / Data / Confidenziale / Elaborazione di...

39 39 Titolo Presentazione / Data / Confidenziale / Elaborazione di...


Scaricare ppt "1 Corso Framework Struts - Grivet Chin Franco Corso Framework Struts (1) 2 Elaborazione di Franco Grivet Chin Data 16/06/2009."

Presentazioni simili


Annunci Google