Flex java数据交互

本人是从事BS架构应用开发的,现在发现客户越来越关注用户的互动体验,视觉上的冲击 界面与提示友好 portlet 百花齐放
   基于各方面原因,现在开始关注flex技术.没说的最终还是要与实际应用结合来使用的.如何让flex开发的.swf与java进行数据交互?了解到flex是用amf与java进行数据交互的,按照网上搜出来的相关文档进行配置

   首先下载BlazeDS包 解压后

   

将lib下的jar包copy到自己建立好的web应用的lib下,将flex文件夹直接copy到/WEB-INF下(包括4个xml文件),在web.xml里加入view plaincopy to clipboardprint?
<servlet> 
        <servlet-name>MessageBrokerServlet</servlet-name> 
        <display-name>MessageBrokerServlet</display-name> 
        <servlet-class> 
            flex.messaging.MessageBrokerServlet  
        </servlet-class> 
        <param-name>contextConfigLocation</param-name> 
        <param-value> 
            /WEB-INF/flex/services-config.xml  
        </param-value> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
      
    <filter-mapping> 
        <filter-name>struts2</filter-name> 
        <url-pattern>/sevlet/*</url-pattern> 
    </filter-mapping> 
      
    <servlet-mapping> 
        <servlet-name>MessageBrokerServlet</servlet-name> 
        <url-pattern>/messagebroker/*</url-pattern> 
    </servlet-mapping> 
<servlet>
  <servlet-name>MessageBrokerServlet</servlet-name>
  <display-name>MessageBrokerServlet</display-name>
  <servlet-class>
   flex.messaging.MessageBrokerServlet
  </servlet-class>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/flex/services-config.xml
  </param-value>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/sevlet/*</url-pattern>
 </filter-mapping>
 
 <servlet-mapping>
  <servlet-name>MessageBrokerServlet</servlet-name>
  <url-pattern>/messagebroker/*</url-pattern>
 </servlet-mapping>

注意 由于我用的是struts2+spring2.5+Hibernate3.3 开始由于在配置struts2的<url-pattern>/*</url-pattern>使我的<url-pattern>/messagebroker/*</url-pattern>请求总接收不到 郁闷了好半天 最后将应用中所有的请求加了一级路径 才分开

配置好后访问http://{server.name}:{server.port}/{context.root}/messagebroker/amf如果能够访问 那么应用一级就配置好了

下面开始用flex开发功能点吧.

view plaincopy to clipboardprint?
<?xml version="1.0"?> 
<!-- DataGrid control example. --> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Script> 
        <!--[CDATA[  
            import mx.messaging.channels.AMFChannel;  
            import mx.messaging.ChannelSet;  
            import mx.rpc.remoting.RemoteObject;  
            import mx.controls.listClasses.ListData;  
            import mx.controls.Alert;  
            import mx.collections.ArrayCollection;  
            import mx.rpc.events.ResultEvent;  
            import mx.rpc.events.FaultEvent;  
            import mx.collections.ListCollectionView;  
 
            [Bindable]  
            private var ac:ArrayCollection;  
            private var cs:ChannelSet;   
 
            private function createChannelSet():ChannelSet  
            {  
                if (cs == null)  
                {  
                    cs=new ChannelSet();  
                    var ac:AMFChannel=new AMFChannel("my-amf", "http://localhost:8089/ssh/messagebroker/amf");  
                    cs.addChannel(ac);  
                }  
                return cs;  
            }  
 
            private function getGridDataAction():void  
            {  
 
                getDataObj.getGridData();  
                labNote.text="正在读取...请稍候";  
            }  
 
            //查询出来的结果为数组,直接传递给init即可    
            private function loadAcData(event:ResultEvent):void  
            {  
                onResultHandler(event);  
                labNote.text="读取成功,总共 N 条员工信息!";  
            }  
 
 
            private function updateGridDataAction():void  
            {  
      
                labNote.text="请稍后...正在处理";  
            }  
 
            private function updateGridDataResult(event:ResultEvent):void  
            {  
                labNote.text=String(event.result as String);  
            }  
 
            private function onResultHandler(event:ResultEvent):void  
            {  
                myDG.dataProvider=event.result;  
            }  
 
            private function onFaultHandler(event:FaultEvent):void  
            {  
                Alert.show(String(event.fault), "Fault!");  
            }  
        ]]--> 
    </mx:Script> 
 
    <!-- remoteObject used to get data from mysql database --> 
    <mx:RemoteObject id="getDataObj" 
                     destination="ro" channelSet="{createChannelSet()}"> 
        <mx:method name="getGridData" 
                   result="onResultHandler(event)" 
                   fault="onFaultHandler(event)"/> 
    </mx:RemoteObject> 
 
    <mx:Panel title="Employee Inforamtion Management System" 
              height="288" 
              width="100%" 
              paddingTop="10" 
              paddingLeft="10" 
              paddingRight="10" 
              layout="absolute"> 
 
        <!--设置pageSize为8,表示每页显示8条记录,不设置默认显示5条记录--> 
        <!--dataGridDoubleClick="showUserInfo()" --> 
        <mx:DataGrid id="myDG" 
                     width="100%" 
                     height="100%"> 
 
            <mx:columns> 
                <!--为这个标签设置DataGridColumn,指示在DataGrid上显示的列--> 
 
                <mx:DataGridColumn headerText="品名" 
                                   dataField="productdesc"/> 
                <mx:DataGridColumn headerText="期初库存" 
                                   dataField="initquantity"/> 
                <mx:DataGridColumn headerText="购入" 
                                   dataField="purchasequantity"/> 
                <mx:DataGridColumn headerText="销售" 
                                   dataField="salequantity"/> 
            </mx:columns> 
 
        </mx:DataGrid> 
        <mx:Button label="Refresh" 
                   x="417" 
                   y="183" 
                   width="120" 
                   click="getGridDataAction()"/> 
        <mx:Button id="updateDataBtn" 
                   x="72" 
                   y="183" 
                   label="Update" 
                   width="120" 
                   textAlign="center" 
                   click="updateGridDataAction()"/> 
        <mx:Label id="labNote" 
                  x="10" 
                  y="214" 
                  width="637" 
                  color="#0000FF" 
                  height="24" 
                  fontSize="12" 
                  fontFamily="Times New Roman"/> 
 
    </mx:Panel> 
</mx:Application> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值