在我的FLEX博客(www.wolfdream.cn)用到了FLEX与JAVA交互,其中就包括以下的交互。
以前用FLEX与JAVA交互,一般都用remoteObject来调用后台相应的JAVA的方法,对于那些较小量的数据交互,我们可以用FLEX直接与后台的JSP进行通信。下面用一个例子来说明:
Flex端的代码:
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" height="100%"> <mx:Script> <![CDATA[ import flash.net.navigateToURL; import common.URLText; private var request:URLRequest; private function loadData():void{ var loader:URLLoader=new URLLoader(); loader.addEventListener(Event.COMPLETE,handlerComplete); request=new URLRequest(URLText.url+"/hello.jsp?user="+encodeURIComponent("微软中国")+"&abc="+"哈哈"); var variables:URLVariables=new URLVariables(); var ss:String="邓大明"; variables.username="邓大明"; request.data=variables; request.method="post"; loader.load(request); } private function handlerComplete(event:Event):void{ var loader:URLLoader=URLLoader(event.target); hello.text=loader.data; } //URL 从flex组件中得到的text必须进行编码 //自定义的string 无须编码,可以直接传后台 ]]> </mx:Script> <mx:Text id="hello" text="邓小明"/> <mx:Button label="请求后台" click="loadData()"/> </mx:Application>
下面是服务器端JSP页面的内容:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@page import="freemarker.template.utility.StringUtil"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <% request.setCharacterEncoding("utf-8"); out.print("hello 从后台动态传来的hello"); String username1=request.getParameter("username"); String user=new String(username1.getBytes("ISO8859-1"),"utf-8"); System.out.println("用户名:"+user+"||"+username1); System.out.println("abc:"+request.getParameter("abc")); String user0=request.getParameter("user"); String user1=new String(user0.getBytes("ISO8859-1"),"utf-8"); System.out.println("用户名:"+user0+"||"+user1); %> </body> </html>
在前台FLEX点击Button即可请求到JSP的所有内容,其中包含out.print中输入客端的动态内容,这些动态内容一般为我们所需,可以从数据库取数据再取出在FLEX端显示即可,因为取到的是JSP的所有内容,所以这个地方我们必须进行解析,至于怎么解析在这里就不再多说。