Integrare Struts con Flex 2 in ambiente J2EE - Parte 2

(scritto da , il giorno 02-05-2007 02:10)
add to my flexgala

In questo articolo descriveremo brevemente il framework Struts, analizzandone l' architettura ed il pattern MVC su cui si basa. Inoltre realizzeremo una applicazione Struts che comunichera' con il nostro client realizzato in Flex. L' utilizzo dell' IDE JDeveloper ci aiutera' nella creazione di un ambiente standard per la nostra applicazione.

Qualche considerazione su Struts
"Apache Struts is an elegant, extensible framework for creating enterprise-ready Java web applications."

The Apache software foundation.

Apache Struts è un framework open source dell' Apache Jakarta Project utilizzato per lo sviluppo di applicazioni web basate su piattaforma J2EE. Struts estende le Java Servlet, incoraggiando gli sviluppatori all' utilizzo del pattern MVC (Model - View - Controller).
Grazie a Struts è possibile sviluppare applicazioni web di notevoli dimensioni. 

In questo articolo descriveremo in breve questo framework analizzandone l'architettura.
 
Struts è un "flexible control layer" basato su tecnologie standard quali Servlet, JavaBeans, JSP e XML. Il framework aiuta lo sviluppatore nella creazione di un ambiente standard per delle applicazioni basate su standard e design pattern.

Architettura
Jakarta Struts è un MVC web application framework, ovvero è un framework per lo sviluppo di applicazioni web J2EE basato sul pattern Model-View-Controller.
Questo modello applicativo consente di disaccoppiare i diversi componenti dell' applicazione in base al loro ruolo nell' architettura che garantisce vantaggi in termini di riusabilità e manutenibilità.

Il Controller del framework funziona come un bridge tra il Model e il View. Quando riceve una request, il Controller invoca una "Action class". L' Action class con il Model (preferibilmente viene utilizzato un Facadeche rappresenta il Model) esamina o aggiorna lo stato dell' applicativo.

Il framework fornisce una ActionForm class come supporto per il trasferimento di dati tra il Model ed il View.

Spesso il Model è rappresentato da un set di JavaBeans.

Una applicazione web utilizza un deployment descriptor per inizializzare le risorse (quali Servlet e taglibs). Il deployment descriptor è un file formattato come documento XML  e chiamato "web.xml".

Inoltre Struts utilizza un file di configurazione chiamato "struts-config.xml" per inizializzare le proprie risorse. Queste sono le ActionForms, le ActionMappings, le Actions e le ActionForwards.

Flusso dell' informazione all' interno del framework



In questa figura è rappresentato schematicamente come l' informazione attraversa e viene elaborata dai tre livelli del framework:

  • il client invia una request http che viene acquisita dalla ActionServlet di Struts che ne elabora l' informazione e ne estrae i dati con cui richiamerà le seguenti classi: ActionForm e ActionMapping;
  • è invece la Action che svolge il cuore dell' elaborazione: gli è assegnato il compito di elaborare la richiesta http, infatti le verranno passati i seguenti parametri:

        -       ActionMapping mapping;
-      
ActionForm form;
-      
HttpServletRequest request;
-      
HttpServletResponse response.

  • una volta elaborata l' informazione, la Action restituisce alla ActionServlet una ActionForward contenente li informazione da inviare allo strato View;
  • infine la ActionServlet restituisce al client il risultato dell' elaborazione.

Concludendo sono due gli elementi principali del framework: l' ActionServlet, ovvero la servlet da cui passano tutte le request dei client che viene configurata nel file web.xml ed il file struts-config.xml, ovvero il file che contiene la configurazione di tutta l' applicazione.

Procedura per la realizzazione di un applicativo Struts con JDeveloper

Una volta installato JDeveloper andiamo a creare un progetto che ci semplifica la struttura MVC della nostra application.

Creiamo inizialmente la nostra application assegnandogli il nome "mySampleApplication":



sull' Application Navigator apparirà la nostra application già strutturata secondo il template MVC; a noi in questo articolo interesserà modificare solo il ViewController.


Apriamo il file "struts-config.xml" ed inseriamo qui le nostre pagine JSP e la Action, ovvero il cuore del Controller;


Dal Navigator "Struts Page Flow" trasciniamo dentro il nostro struts-config.xml la nostra Action che chiameremo "MyAction". Settiamo questa action come "Default run target" in modo che quando manderemo in run la nostra application la action sarà il target che verrà interrogato per primo.

Trasciniamo dentro anche 2 pagine JSP che saranno il View di una request http e le forward.

Creiamo anche la nostra classe Java che assoceremo alla ActionStruts (basta fare doppio click sull' action ):



Proviamo a compilare il nostro ViewController e non dovrebbero esserci errori.

Adesso analizziamo due file molto importanti:
 
"struts-config.xml" :

<?xml version="1.0" encoding="windows-1252" ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>
  <action-mappings>
    <action
path="/myAction"unknown="true"type="view.MyAction">
      <forwardname="success"path="/myOK.jsp"/>
      <forwardname="fault"path="/myFault.jsp"/>
    </action>
 </action-mappings>
 <message-resources
parameter="view.ApplicationResources"/>
</struts-config>


in questo file vengono mappate tutte le procedure che abbiamo realizzato graficamente; infatti vengono dichiarate le action con le loro forward e le pagine JSP di output.

"web.xml":

<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-
app_2_4.xsd" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
   
<description>Empty web.xml file for Web Application</description>
    <servlet>
        <servlet-name>
action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

        <init-param>
            <param-name>
config</param-name>
           <param-value>/WEB-INF/struts-config.xml</param-value>

        </init-param>
        <load-on-startup>
1</load-on-startup>
    </servlet>
    <servlet-mapping>

        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>

    </servlet-mapping>
    <session-config>

        <session-timeout>35</session-timeout>
    </session-config>
    <mime-mapping>

        <extension>html</extension>
        <mime-type>text/html</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>
txt</extension>
        <mime-type>text/plain</mime-type>
    </mime-mapping>
</web-app>

Ora vediamo come si presenta graficamente il nostro "struts-config":


Il deploy viene eseguito nel seguente modo:

Run -->  deploy --> "New Deployment Profile" e apparirà la seguente schermata:



Selezionare WAR file e premere OK.

Verrà creata all' interno della cartella ViewController del nostro progetto una cartella chiamata "deploy" al cui interno troveremo 2 file *.ear e *.war; prendiamo il nostro file *.war e copiamolo all' interno della webapps del nostro WebContainer (es. TomCat).

Una volta riavviato il nostro Web container se proviamo a collegarci al seguente indirizzo potremo verificare il nostro lavoro:

http://127.0.0.1:8080/myWebStrutsApp/myAction.do

Finalmente un pò di codice

Ecco la classe che rappresenta la Action di Struts. E' qui che avviene la scelta della pagina JSP di ritorno che verrà selezionata in base alla request che il framework riceverà.

publicclass MyAction extendsAction {

    publicActionForward execute(ActionMapping mapping, ActionForm form,
                                HttpServletRequest request,
                                 HttpServletResponse response) throws IOException,
                                                                                                           ServletException {

       String strAction = null;
       strAction = request.getParameter("action");

// in strAction viene memorizzato il parametro della mia request;
        if (strAction != null) {
           if (strAction.equals("firstRequest"))
               returnmapping.findForward("success");

          
 if (strAction.equals("secondRequest"))
               returnmapping.findForward("noSuccess");
       
}
        return mapping.findForward("fault");
// in base al valore del parametro la classe Action restituirà la pagina corretta;
    }
}

Codice relativo alle pagine JSP

"myOK.jsp"

<?xml version="1.0" encoding="utf-8"?>
<%@ page contentType="text/xml; charset=UTF-8"%>
<xml>
    <msg>Hello World :D</msg>
</xml>

"myNoOK.jsp"

<?xml version="1.0" encoding="utf-8"?>
<%@ page contentType="text/xml; charset=UTF-8"%>
<xml>
    <msg>Errore</msg>
</xml>

"myFault.jsp"

<?xml version="1.0" encoding="utf-8"?>
<%@ page contentType="text/xml; charset=UTF-8"%>
<xml>
    <msg>ERROR</msg>
</xml>


Commenti (0)

Registrati ed esegui il login se vuoi lasciare un commento

Visualizza l'articolo in formato pdfScarica o stampa l'articolo "Integrare Struts con Flex 2 in ambiente J2EE - Parte 2" in formato PDF

Torna indietro
Per collaborazioni, proposte, segnalazioni scrivete a:

Javaday 2010




  •  
    Articoli
     
  •  
    Blogs
     
  •  
    Eventi
     
  •  
    Layout
     
  •  
    in più
     
 

Utilizzare i Charts components in Flex 3 - I° parte (07-01-2010)
Una delle potenzialità messe a disposizione nel Flex Builder, nelle Flex SDK e nel futuro Flash Builder, è la possibilità di utilizzare i Charts...

JavaDay a Roma il 30 gennaio 2010 (11-12-2009)
Anche quest'anno si terrà a Roma - presso l'Università di Roma Tre - l'attesissimo evento JAVADAY oggi giunto alla 4° edizione. Una full...

Adobe AIR 2 beta su Adobe Labs (09-12-2009)
Già da qualche giorno è disponibile la nuova versione beta di Adobe AIR. Molte sono le novità che questa release presenta. Anzitutto, dato il...

FITC 2010: pronti per la 3° edizione! (22-11-2009)
Nel 2010 si terrà ad Amsterdam il 22 e 23 febbraio: segnate queste date sulla vostra agenda, mi raccomando! E' assolutamente vietato mancare! E...

Verso la creazione di Rich Web Applications con le novità di Spring 3.0 e l'integrazione con Adobe Flex (18-11-2009)
Un evento unico, completamente gratutito, condensato in 3 ore dense di contenuti e anteprime. Per la prima volta in Italia verrà presentata...

Nuovi e-seminar per FlexGALA in calendario (09-11-2009)
Come preannunciato lo scorso settembre, alla ripresa post-vacanze, eccoci con il primo appuntamento al quale faranno seguito altri eventi in...

From Illustrator to HTML 5 CANVAS
Author : Flex888

Put those Flash vs HTML 5 vs Adobe vs Apple vs Google mix aside, there are creative works been done to solve the problems. Check out his video: ...


continua...

From Illustrator to HTML 5 CANVAS
Author : Flex888

Put those Flash vs HTML 5 vs Adobe vs Apple vs Google mix aside, there are creative works been done to solve the problems. Check out his video: ...


continua...

apri dettaglio news No-Flash iPad vs Netbook
Author : Flex888


apri dettaglio news No-Flash iPad vs Netbook
Author : Flex888


JavaDay IV edizione

Data di svolgimento: 30-01-2010

A day in a differtent universe è quello che si...

Rich Web Applications con Spring Training

Data di svolgimento: 30-11-2009

Un evento unico, completamente gratutito, conde...

WorkCity ospite allo SMAU 2009

Data di svolgimento: 21-10-2009

WorkCity, nato da un'idea del nostro collaborat...

Integrare LiveCycle DS nelle architetture Enterprise

Data di svolgimento: 27-11-2008

Livecycle DS e Flex 3 sono le soluzioni di ...

Live Cycle DS best practices: creare architetture per RIA

Data di svolgimento: 05-11-2008

Livecycle DS e Flex 3 rappresentano insieme il ...

Adobe e l\'Open Source: usare le tecnologie aperte di Adobe

Data di svolgimento: 28-10-2008

Non solo licenze a pagamento: Adobe ha detto sÃ...