Below is Flex code sample to communicate to a Java servlet in the back-end using HTTP Service.
Now, here is the Java Servlet.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
[Bindable]
private var xmldata:XML;
private function send_data():void {
httpXmlDataService.send();
}
private function faultHandler(event:FaultEvent):void{
mx.controls.Alert.show(event.fault.message,"Error in getting result");
}
private function resultHandler(event:ResultEvent):void{
xmldata=event.result as XML;
}
private function displayBeforeTax(row:Object,column:DataGridColumn):String{
return row.profit.beforetax;
}
private function displayAfterTax(row:Object,column:DataGridColumn):String{
return row.profit.aftertax;
}
]]>
</mx:Script>
<mx:HTTPService id="httpXmlDataService"
url="http://localhost:8080/flexJavaIntegration/opendesk"
resultFormat="e4x"
result="resultHandler(event)"
fault="faultHandler(event)"
useProxy="false"/>
<mx:Panel x="43" y="10" width="588" height="369" layout="absolute">
<mx:DataGrid x="50" y="23" width="469" height="265" dataProvider="{xmldata.item}">
<mx:columns>
<mx:DataGridColumn headerText="Type" dataField="@type"/>
<mx:DataGridColumn headerText="Sales" dataField="sales"/>
<mx:DataGridColumn headerText="Profit before tax" labelFunction="displayBeforeTax"/>
<mx:DataGridColumn headerText="Profit after tax" labelFunction="displayAfterTax"/>
</mx:columns>
</mx:DataGrid>
<mx:Button x="66" y="296" label="Get Data" click="send_data()" />
</mx:Panel>
</mx:Application>
Now, here is the Java Servlet.
package com.opendesk.flexjava;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class OpenDeskService extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
Enumeration en = req.getParameterNames();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
String value = (String) req.getParameter(key);
System.out.println("Key : " + key + " Value : " + value);
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/xml");
PrintWriter writer = response.getWriter();
writer.println("<?xml version=\"1.0\"?>\n");
writer.println("<salesdata>");
writer.println("<item type=\"xxxxxxxxxxxxCDs\">");
writer.println("<profit>");
writer.println(" <beforetax>1750</beforetax>");
writer.println(" <aftertax>1600</aftertax>");
writer.println("</profit>");
writer.println("<sales>21000.23</sales>");
writer.println("</item>");
writer.println("<item type=\"DVD\">");
writer.println("<profit>");
writer.println(" <beforetax>1550.34</beforetax>");
writer.println(" <aftertax>1350.10</aftertax>");
writer.println("</profit>");
writer.println("<sales>11010.98</sales>");
writer.println("</item>");
writer.println("</salesdata>");
}
}
Comments