Integrare Struts con Flex 2 in ambiente J2EE
(scritto da , il giorno 02-04-2007 09:00)
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
remoti utilizzando componenti quali:
- HTTP services;
- Web services;
- Remote object services.
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;
// 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 {
// definisco in XML il formato dei dati che il server mi deve inviare;
// stavolta passo dei parametri alla mia request;
private function httpOK (e:ResultEvent):void {
var serviceHello:HTTPService = new HTTPService();
serviceHello.url = "myXML/response_02.xml";
serviceHello.resultFormat = "xml";
serviceHello.method = "GET";
serviceHello.request = {request: "getInfo"};
serviceHello.send();
serviceHello.addEventListener("result", httpOK);
serviceHello.addEventListener("fault", httpFault);
}
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 {
Response_02.xml:
Alert.show(e.fault.faultCode + "errore: " + e.fault.faultString, "ERRORE");
}
<?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 {
private function httpFault(e:FaultEvent):void {
var myXML:XML = new XML(e.result);
var myResult:XMLList = myXML.response;
var str:String = myResult.toString();
Alert.show(str, "MESSAGGIO");
}
Alert.show(e.fault.faultCode + "errore: " + e.fault.faultString, "ERRORE");
}
Response_03.xml:
<xml>
<response>Utente abilitato/non;
<xml>
Commenti (0)
Registrati ed esegui il login se vuoi lasciare un commento
Scarica o stampa l'articolo "Integrare Struts con Flex 2 in ambiente J2EE" in formato PDF
Torna indietro









