學習了一下Flex,想總結一下Flex與Java通信的例子。其中Flex與Java高資料量的通信用的是Blazeds,大多的例子是Blazeds自帶的執行個體整理的。
首先看看使用Flex中的HTTPService如何與Java的Servlet通信。
Java端如下:
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 7780152800409281311L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("userpassword");
String message = null;
if (null == username || null == password || "".equals(username)
|| "".equals(password)) {
message = "failure";
} else if ("mengya".equals(username) && "mengya".equals(password)) {
message = "succeed";
} else {
message = "failure";
}
//傳回用戶端的是一個xml
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
out.print("<result>");
out.print("<message>");
out.print(message);
out.print("</message>");
out.print("</result>");
}
}
與AJAX有點類似。
Flex端如下(主具的設計可以下載下傳下面的源碼):
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
backgroundGradientAlphas="[1.0, 1.0]"
backgroundGradientColors="[#FD1D06, #EAF807]" height="328" width="428">
<mx:HTTPService
showBusyCursor="true"
id="loginSrv"
result="doResult();"
method="GET"
url="http://localhost:8080/FlexStudy/LoginServlet">
<mx:request>
<username>
{txtname.text}
</username>
<userpassword>
{txtpwd.text}
</userpassword>
</mx:request>
</mx:HTTPService>
<mx:Script>
<![CDATA[
import mx.controls.Alert;
private function doResult():void
{
var returnValue:String=loginSrv.lastResult.result.message;
if(returnValue=="succeed") {
this.currentState="login";
}
else {
Alert.show("您的登入失敗了","提示資訊",Alert.OK,this,null,null,Alert.YES);
}
}
]]>
</mx:Script>
<mx:Panel id="loginPanel" x="69.5" y="52" width="289" height="200" layout="absolute" title="登陸" fontSize="12">
<mx:Button x="110" y="108" label="送出" id="btnSubmit" click="loginSrv.send();"/>
<mx:TextInput x="79" y="30" fontSize="12" id="txtname"/>
<mx:TextInput x="79" y="62" id="txtpwd" displayAsPassword="true"/>
<mx:Label x="21" y="32" text="姓名:" id="lbname" fontSize="12" fontWeight="bold"/>
<mx:Label x="21" y="64" text="密碼:" id="lbpwd" fontSize="12" fontWeight="bold"/>
</mx:Panel>
</mx:Application>