Flex和JSP的交互通信

第一种方式:Flex——JSP——Flex
Flex页面,向JSP传参,JSP处理后,返回至Flex。这一种HttpService即可解决。估计网上的方式很多了,可以借鉴BladeDz的应用,当然也可以硬编码。
核心代码如下:
//Flex传参
<mx:HTTPService id="ser" url="p.jsp" resultFormat="xml">
        <mx:request>
            <categoryID>{categoryId}</categoryID>
        </mx:request>
 </mx:HTTPService>
//JSP 生成的是XML文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<results>
<%
            //rs为javabean
            out.println("<phone>");
            out.println("<id>"+rs.getId()+"</id>");
            out.println("<name>"+rs.getName()+"</name>");
            out.println("</phone>");
    
%>
</results>
//Flex取结果
  <mx:DataGrid id="dg">
        {ser.result.results.phone}
  </mx:DataGrid >


第二种方式:JSP——Servlet/JSP——Flex
JSP界面,JSP(Servlet)处理,最后跳转到Flex界面。同时Flex界面要获得JSP的某个参数值(如下username)。可以在Flex的那个html页面中处理,主要处理方式如下:
先将flex的html页面变成jsp,添加
//由servlet获得
String username =(String)request.getAttribute("username");

定义flashVars变量,然后在swfobject.embedSWF中添加"?id=<%=username%>"如下
   
 <param name="flashVars" value="id=<%=username%>" />
swfobject.embedSWF(
                "index.swf?id=<%=username%>", "flashContent",
                "100%", "100%",
                swfVersionStr, xiSwfUrlStr,
                flashvars, params, attributes);

就可以在Flex界面中,通过FlexGlobals.topLevelApplication.parameters.id获得jsp所传的username了。

你可能感兴趣的:(Flex)