本人是从事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>