本教程基于Blazeds官方示例!通俗易懂、老少皆宜、不论男女!---叨、校长
1、新建一个Java Web Project---MyBlazeds
2、 添加Blazeds支持!
解压Blazeds.war文件,然后右击项目MyBlazeds的WebRoot文件夹—Import…
选择File System、然后找到刚刚解压的Blazeds文件路劲、选中解压后的文件blazeds
然后单击finished,这样就成功的添加了Blazeds的支持!当然也可以手动把blazeds文件复制到项目的webroot目录下!(详情查看图片附件)
3、
编写数据服务测试类、这里实现了一个查询、保存的功能!
a) 首现要定义一个持久化对象:本列使用:Person/**
* 持久化对象Person 注意此类必须序列化、否则Actionscript无法进行转换
* @author 叨、校长
*
*/
public class Person implements Serializable{
private static final long serialVersionUID = 9014182050509201925L;
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
b)
编写一个业务逻辑方法、共Flex客户端调用:
/**
* 业务逻辑类、提供查询、保存对象的方法
* @author 校长
*
*/
public class PersonService {
//查询
public List<Person> getPerList(String name,int start,int limit) {
System.out.println("获取数据");
List<Person> list=new ArrayList<Person>();
int i=start;
int total=start+limit;
System.out.println(i);
System.out.println(total);
for(;i<=total;i++){
int j=(i%10)*111;
Person bean=new Person();
bean.setId(i+"");
bean.setName("@"+name+j);
bean.setAge(i);
list.add(bean);
}
return list;
}
//保存
public Person savaPerson(Person person) {
Person p=new Person();
p.setId(person.getId());
p.setName(person.getName());
p.setAge(person.getAge());
System.out.println("保存数据");
return p;
}
}
<!--[if !supportLists]-->c)
<!--[endif]-->然后在remoting-config.xml配置文件里面配置这个类
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<!-- 配置RemoteObject对象的destination属性 -->
<destination id="PersonService">
<properties>
<source>com.daodao.service.PersonService</source>
<scope>request</scope>
</properties>
</destination>
</service>
这样,服务器端就配置好了!destination属性可以配置多个!
4、Flex客户端配置:
下面列出主要的配置、as文件,其他的请大家查看附件!
添加一个Person.as类与服务器端的持久化对象绑定、这样AS就能自动把ASObject转换成java对象了
package com.daodao.bean
{
//与远程java bean绑定 属性名、类名一致
[Bindable]
[RemoteClass(alias="com.daodao.bean.Person")]
public class Person
{
public function Person()
{
}
public var id:String;
public var name:String;
public var age:int;
}
}
在编写一个proxy类、用于与远程服务器的交互
package com.daodao.proxy
{
import com.daodao.bean.Person;
import mx.controls.Alert;
import mx.rpc.AsyncToken;
import mx.rpc.remoting.RemoteObject;
/**
* 业务逻辑代理
* 与远程服务进行数据交互
* 使用RemoteObject对象
*/
public class PersonProxy
{
private var myRemote:RemoteObject;
//构造函数 初始化RemoteObject对象
public function PersonProxy()
{
var destination:String=null;
destination="PersonService";
myRemote=new RemoteObject(destination);
}
//通过RemoteObject调用远程服务的方法,返回一个AsyncToken
public function getPersonList(name:String,start:int,limit:int):AsyncToken
{
return myRemote.getPerList(name,start,limit);
}
//通过RemoteObject调用远程服务的方法,返回一个AsyncToken
public function savePerson(p:Person):AsyncToken
{
return myRemote.savaPerson(p);
}
}
}
这里我给大家提供一个AsyncToken工具类、关于AsyncToken的用发请自行查阅相关资料!
package com.daodao.util
{
import mx.rpc.AsyncToken;
import mx.rpc.Responder;
//
public class FlexUtil
{
public function FlexUtil()
{
}
public static function addRs(token:AsyncToken,result:Function,fault:Function):void
{
token.addResponder(new Responder(result,fault));
}
}
}
这样我们就配置好了RemoteObject的逻辑方法!随时可以调用了!
下面我贴出所有的mxml代码
application:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:component="com.daodao.component.*" creationComplete="fillGrid()">
<fx:Declarations>
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.daodao.component.person.AddPerson;
import com.daodao.proxy.PersonProxy;
import com.daodao.util.FlexUtil;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.managers.PopUpManager;
import mx.messaging.AbstractConsumer;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
public var DG_Array:ArrayCollection;
public var token:AsyncToken;
public var proxy:PersonProxy=new PersonProxy();
//查询数据方法
public function fillGrid():void{
var name:String=text_name.text;
token=proxy.getPersonList(name,0,20);
FlexUtil.addRs(token,getResult,getFault);
}
private function getResult(event:ResultEvent):void{
DG_Array=ArrayCollection(event.result);
}
private function getFault(event:FaultEvent):void{
Alert.show("没有数据!");
}
public function newAddWin():void
{
var add_per:AddPerson=new AddPerson();
PopUpManager.addPopUp(add_per,this,true);
PopUpManager.centerPopUp(add_per);
}
]]>
</fx:Script>
<mx:TabNavigator width="100%" height="100%">
<mx:HDividedBox label="员工管理" width="100%" height="100%">
<s:Panel width="15%" height="100%" title="功能菜单">
</s:Panel>
<mx:VBox width="85%" height="100%">
<s:Panel title="查询" height="100" width="100%" top="10" left="10" right="30">
<s:Label x="20" y="17" fontSize="18" text="姓名:"/>
<s:TextInput id="text_name" x="75" y="14"/>
<s:Button id="btn_name" x="246" y="13" label="查询" click="fillGrid()"/>
<s:Button x="369" y="11" label="新增" click="newAddWin()"/>
</s:Panel>
<mx:DataGrid id="dg" width="100%" height="100%" right="30" dataProvider="{DG_Array}">
<mx:columns>
<mx:DataGridColumn dataField="id" headerText="Name"/>
<mx:DataGridColumn dataField="name" headerText="Phone"/>
<mx:DataGridColumn dataField="age" headerText="Email"/>
</mx:columns>
</mx:DataGrid>
</mx:VBox>
</mx:HDividedBox>
<mx:Box label="考勤管理" width="100%" height="100%">
</mx:Box>
<mx:Box label="系统管理" width="100%" height="100%">
</mx:Box>
</mx:TabNavigator>
</s:Application>
AddPerson://添加对象时的一个Titlewindow组件
<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300" >
<fx:Script>
<![CDATA[
import com.daodao.bean.Person;
import com.daodao.proxy.PersonProxy;
import com.daodao.util.FlexUtil;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
import mx.rpc.AsyncToken;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private var proxy:PersonProxy=new PersonProxy();
private var token:AsyncToken=new AsyncToken();
private function savePerson():void
{
var per:Person=new Person();
per.id=(f_text_id.text);
per.name=(f_text_name.text);
per.age=(2);
token=proxy.savePerson(per);
FlexUtil.addRs(token,getResult,getFault);
}
private function getResult(event:ResultEvent):void{
var p_rs:Person=new Person();
p_rs=event.result as Person;
Alert.show("编号:"+p_rs.id+"\n姓名:"+p_rs.name);
}
private function getFault(event:FaultEvent):void{
Alert.show("没有数据!");
}
private function closeWin():void
{
PopUpManager.removePopUp(this);
}
]]>
</fx:Script>
<s:Form width="100%">
<s:FormItem label="编号" width="100%">
<s:TextInput id="f_text_id"/>
</s:FormItem>
<s:FormItem label="姓名" width="100%">
<s:TextInput id="f_text_name"/>
</s:FormItem>
<s:FormItem label="年龄" width="100%">
<s:TextInput id="f_text_age"/>
</s:FormItem>
<s:Button label="保存" id="btn_save" click="savePerson()"/>
<s:Button label="关闭" id="btn_close" click="closeWin()"/>
</s:Form>
</s:TitleWindow>
到这里就完成了、效果图在图片附近里面有(Flex客户端源码也上传了!欢迎查阅!)
分享到:
相关推荐
7. **Tomcat 安装**:Tomcat 是一个开源的轻量级应用服务器,主要用来运行 Java Servlet 和 JavaServer Pages(JSP),在本环境中用于部署 Flex 和 BlazeDS 应用。 8. **FlashBuilder 4.5**:FlashBuilder(之前...
标题 "快速搭建基于BlazeDS的FLEX+JAVA WEB应用" 涉及到的是一个技术教程,旨在指导用户如何构建一个使用Adobe Flex前端和Java后端的Web应用程序,其中BlazeDS作为数据通信的中间件。这个过程涉及到多个关键知识点,...
本文将详细介绍如何配置一个基于Flex、Java和BlazeDS的Web工程,以实现客户端Flex与服务器端Java的交互。 1. **BlazeDS介绍** BlazeDS是Adobe公司开发的一个开源项目,它提供了轻量级的消息传递系统,使得Flex...
本文主要讲述如何利用Flex、MyEclipse、BlazeDS和Tomcat搭建一个用于Flex开发的完整环境。首先,我们需要理解Flex和RIA(Rich Internet Applications)的概念。 Flex是Adobe公司提供的一款用于创建富互联网应用...
本文档主要介绍了如何在Myeclipse8.5环境下搭建Flex4.5、Blazeds和SSH(Spring、Struts、Hibernate)的开发环境。以下是详细步骤及涉及的相关知识点: 1. **Flex和Blazeds简介** - **Flex**:是一种基于...
根据给定的文件信息,以下是对“flex+blazeds搭建环境步骤”的详细解析与扩展,旨在帮助读者深入了解Flex与BlazeDS集成的过程及其在Web开发中的应用。 ### Flex与BlazeDS概述 Flex是一种用于构建和维护客户端应用...
Flex+blazeDS+Spring官方Demo,环境搭建,内含十几个例子,从易到难,包括spring消息,spring安全,注解方式和非注解配置文件方式,十分好用。内含有tomcat,可直接启动并运行用户手册。
本文将深入探讨如何入门搭建Flex + BlazeDS + Java环境,并介绍其基本应用。 首先,我们需要理解Flex。Flex是一款基于ActionScript和MXML的开源框架,主要用于构建具有交互性和动态效果的用户界面。它提供了丰富的...
【MyEclipse_8.5_flex4+Blazeds配置】是一篇关于在MyEclipse 8.5环境中配置Flex 4和Blazeds的教程。以下是对整个配置过程的详细说明: 首先,你需要准备以下软件: 1. `apachetomcat.exe`:Apache Tomcat服务器,...
【基于Blazeds的flex和java双向通信】 在IT领域,构建富互联网应用程序(RIA)时,Flex作为前端用户界面框架,与后端Java服务进行交互是常见的需求。Blazeds是Adobe提供的一种解决方案,它使得Flex和Java之间能够...
网络上好多Myeclipse8.5+flex4.5+Blazeds+SSH环境搭建及实例,个人实验过程中出现了不少问题,通过从网络上搜索各种资源,最后成功整合,以供大家学习。当然,还有部分内容没有修改完,但至少能够成功运行
搭建MyEclipse8.5与Flex4.5、Blazeds和SSH的开发环境涉及到多个步骤,主要包括安装和配置各种组件。以下是对每个步骤的详细解释: 1. **JDK安装**:首先需要安装Java Development Kit (JDK),这是进行Java开发的...
最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的BlazeDS实现flex与java通信..无积分下载...最简单的...
这篇文档主要介绍的是如何搭建一个基于MyEclipse 8.5、Flex 4.5、BlazDS以及Spring、Hibernate(SSH)的开发环境,并通过一个实例来展示具体操作步骤。以下是详细的步骤和相关知识点: 1. **所需软件**: - BlazDS...
基于BlazeDS实现Flex和Java通讯
标题与描述均聚焦于“Flex4.5 + Tomcat6.0 + MyEclipse 9.0+ Java+Blazeds环境配置和使用”,这一主题涉及了多种技术栈的集成,包括Flex4.5(FlashBuilder)、Tomcat6.0、MyEclipse 9.0、Java以及Blazeds。...