Integrare Struts con Flex 2 in ambiente J2EE

(scritto da , il giorno 02-04-2007 09:00)
add to my flexgala

Struts è un framework open source per lo sviluppo di applicazioni web su piattaforma J2EE che estende le Java Servlet, incoraggiando gli sviluppatori all'utilizzo del pattern Model-View-Controller. In questo articolo verrà illustrato come integrare con la classe HTTPService applicazioni Java con Struts che usano come front end Flex 2.

Introduzione agli HttpService come Front End Flex per la comunicazione con Struts

Adobe Flex 2 supporta una architettura service–oriented in cui una applicazione Flex può interagire con data source
remoti utilizzando componenti quali:
  • HTTP services;
  • Web services;
  • Remote object services.
I componenti RPC consentono ai client di interagire con servizi RPC del server e consentono sempre ai client di ricevere dati dinamicamente a runtime dal server.
In una tipica applicazione Flex, i componenti RPC lato client inviano richieste asincrone ad uno o più servizi remoti i quali restituiscono dati ai component RPC dei client che hanno richiesto il servizio.
EÂ’ possibile dichiarare componenti RPC in MXML o in ActionScript.

Gli Http Service inviano e ricevono dati utilizzando http GET e POST. In genere la destinazione per i componenti Http Service è una pagina JSP o una risorsa sempre accessibile over HTTP.
Questo articolo descrive l’utilizzo di componenti RPC in applicazioni Flex. L’ obiettivo di questo articolo non è fornire uno standard sull’utilizzo dei componenti RPC ma dare qualche chiarimento sull’utilizzo di questi componenti molto diffusi al giorno d’oggi.

HTTPService components

In una applicazione Flex i componenti HTTPService operano nel modo seguente: consentono lÂ’invio di request HTTP del tipo: GET, POST, HEAD, OPTIONS, PUT, TRACE o DELETE ed includono i dati nelle responseHTTP.
Un HTTP service può essere qualunque HTTP URI che accetti HTTP request ed invii HTTP response.
Un esempio di utilizzo di componenti HTTPService sono lÂ’ interazione con JavaServer Pages (JSPs), servlets, e pagine ASP.

Cosa impareremo ad usare:

HTTPService class;
Procedura per la costruzione di una http request;
Creazione di un HttpService object;
Visualizzazione dei dati restituiti dallÂ’ HttpService in un result eventÂ’s object.

Esempio A_01:

Classico Hello World realizzato con RPC component.
In quest’esempio attraverso il click di un Button viene invocato un HTTPService che invia una request e si mette in ascolto della rispettiva response; se tutto va a buon fine riceverà la scritta “Hello World”.
Per testare l’ applicativo è possibile sostituire l’ULR della servlet del Server con un file XML che rappresenta in modo speculare l’ output della Servlet stessa.

CODE HIGHLIGHT

private function sendRequestHello():void {
// creazione dellÂ’ oggetto HTTPService
    var serviceHello:HTTPService = new HTTPService();

// assegnazione dellÂ’ULR da contattare;
// è possibile assegnare staticamente o dinamicamente un RL da cui ottenere i nostri dati in xml;
// nel nostro esempio noi riceveremo i dati in modo statico;
    serviceHello.url = "myXML/response_01.xml";

// specifico il tipo di protocollo (nellÂ’esempio HTTP-GET) da utilizzare nella request;
    serviceHello.method = "GET";

// invio della request attraverso lÂ’ utilizzo del metodo send();
    serviceHello.send();

// aggiungo al mio HTTPService 2 ascoltatori;
    serviceHello.addEventListener("result", httpOK);
    serviceHello.addEventListener("fault", httpFault);
}

// Se tutto va a buon fine il risultato della mia operazione sarà posto nell’ oggetto result;
// attraverso la proprietà “resultFormat” (che noi non useremo in questo esempio) è possibile
// configurare il tipo di dato che ritorna la response del mio HttpService;

 private function httpOK (e:ResultEvent):void {
// nell’ esempio l’ oggetto result è rappresentato da un Object “objResult”;
            var objResult:Object = e.result.xml.response;
            Alert.show(objResult.toString(), "MESSAGGIO");
}

private function httpFault (e:FaultEvent):void {
            Alert.show(e.fault.faultCode + "errore: " + e.fault.faultString, "ERRORE");
}


response_01.xml:

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <response>Hello WORLD
</xml>

 

 


Esempio A_02:

Altro Hello World realizzato con RPC component con invio di parametri e ResultFormat del servizio RPC di tipo XML.
Tra il primo e questo esempio sembrano non esserci particolari differenze ma nel prossimo esempio capiremo lÂ’ importanza dei parametri da passare alla Servlet del Server.

CODE HIGHLIGHT

private function sendRequestHello():void {
            var serviceHello:HTTPService = new HTTPService();
            serviceHello.url = "myXML/response_02.xml";

// definisco in XML il formato dei dati che il server mi deve inviare;
            serviceHello.resultFormat = "xml";
            serviceHello.method = "GET";

// stavolta passo dei parametri alla mia request;
            serviceHello.request = {request: "getInfo"};
            serviceHello.send();
            serviceHello.addEventListener("result", httpOK);
            serviceHello.addEventListener("fault", httpFault);
}

private function httpOK (e:ResultEvent):void {
            var myXML:XML = new XML(e.result);
            var myResult:XMLList = myXML.response;
            var str:String = myResult.toString();
            Alert.show(str, "MESSAGGIO");
}

 

 

 

 private function httpFault (e:FaultEvent):void {
            Alert.show(e.fault.faultCode + "errore: " + e.fault.faultString, "ERRORE");
}


Response_02.xml:

 

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <response>Hello WORLD
</xml>


Esempio A_03:

Esempio Login con RPC component; in questo esempio è molto importante l’utilizzo dei parametri;

CODE HIGHLIGHT


private function sendRequestLogin():void {
            var strLogin:String = txtLog.text;
            var strPasswd:String = txtPsw.text;
            var serviceLogin:HTTPService = new HTTPService();
            serviceLogin.url = "myXML/response_03.xml";
            serviceLogin.resultFormat = "xml";
            serviceLogin.method = "GET";

// con il parametro request informo la Servlet quale action sto richiamando;
// con gli altri parametri provo ad autenticarmi;
            serviceLogin.request = {request: "loginAction", login: strLogin, password: strPasswd};
            serviceLogin.send();
            serviceLogin.addEventListener("result", httpOK);
            serviceLogin.addEventListener("fault", httpFault);
}

private function httpOK(e:ResultEvent):void {
            var myXML:XML = new XML(e.result);
            var myResult:XMLList = myXML.response;
            var str:String = myResult.toString();
            Alert.show(str, "MESSAGGIO");
}

private function httpFault(e:FaultEvent):void {
            Alert.show(e.fault.faultCode + "errore: " + e.fault.faultString, "ERRORE");
}

 


Response_03.xml:

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <response>Utente abilitato/non;

<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" 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Ã...