一、建立Flex与Java交互的工程。
本文中讲到的交互是利用Blazeds的,因为这个是免费的,呵呵,我是穷人。
首先就是去下载Blazeds的压缩包,这个可以从官网或者CSDN、JavaEye上下到。解压缩这个包,将里面的Blazeds.war解压,后面建立工程时要使用。
在MyEclipse中建立一个web工程,名为FlexTest。(注意:这个工程的JDK一定是1.5或以上版本,本文使用6.0)
将刚才解压的Blazeds.war包中的“META-INF”与“WEB-INF”文件夹以及文件夹中的内容拷贝到工程的WebRoot下。WEB-INF中包含有Flex的配置文件以及Blazeds需要的Jar包。这时我们就可以在这个工程中写入Java代码了。本文以一个ROLES表为例,建立Roles实体类。代码如下:
package org.entity;
publicclass Camerabasic implements java.io.Serializable {
private String id;
private String cameraid;
private String name;
private String brand;
private String model;
private String cameratype;
private String factory;
private String contactphonenum;
private String focallength;
private String codingstyle;
private String installationaddr;
private String installer;
private String cadurl;
private String controldistance;
private String fov;
【get set方法省略】
}
注意,由于这个实体类需要当做Java代码中方法的返回值传递给Flex中的AS代码,所以需要继承Serializable接口,否则将导致异常的发生。
然后,在建立一个供Flex调用的Java类。代码如下
dao service省略。。。
在改例子中,使用的框架式spring+hibernate,写一个普通类供Flex调用的java类,如下:
package org.action.query;
import java.util.List;
import org.entity.Camerabasic;
import org.service.query.CameraService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
publicclass CameAction{
private CameraService cService;
public CameraService getcService() {
returncService;
}
publicvoid setcService(CameraService cService) {
this.cService = cService;
}
public List<Camerabasic> getdataMe(){
try {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
cService = (CameraService) context.getBean("cService");
} catch (Exception e) {
e.printStackTrace();
}
returncService.getAll();
}
}
这里就不连接数据库去操作了,因为本文重点放在Flex调用Java上,所以写个桩数据用以测试。
写完了这两个类,就需要在WebRoot/WEB-INF/flex/remoting-config.xml中配置用以调用这个Java类的信道了。具体代码如下:红色的为重点
<?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>
<!-- 其中destination就是信道,properties是可以配置多个Java类,source是配置要调用Java类的包路径。 -->
<destination id="came">
<properties>
<source>org.action.query.CameAction</source>
</properties>
</destination>
</service>
到此,Java部分的代码就写完了。下面是Flex中的代码。
在Flex Builder中创建一个Flex工程。名称为FlexApp。如图所示
在Flex Builder中创建一个Flex工程。名称为FlexApp。如图所示
注意Project Location的Folder要选择MyEclipse建立的Web工程的WebRoot下。Server technology选择J2EE
点击[Next]按钮进入下一页。如图
注意Server location中Root folder要选择Java Web工程的WebRoot路径。Root URL是Java web工程的访问路径,由于使用的是Tomcat服务器,工程名为FlexTest,所以路径是http://localhost:8080/FlexTest/,而
Context root则是Java Web项目的工程名。完成后点击那个[Validate Configuration]进行验证,如果窗口上方显示如上图所示的“黄三角”就说明可以进行下一步操作了。
顺利建立完Flex工程后,需要注意是否报错,如果报错,请注意调整Flex SDK的版本。
没问题后,就要创建一个AS的类,用来接收Java程序的返回值了,也就是那个CameEntity。代码如下:
package com.controller
{
[Bindable]
[RemoteClass(alias="org.entity.Camerabasic")]
publicclass CameEntity
{
publicvar id:String;
publicvar cameraid:String;
publicvar name:String;
publicvar brand:String;
publicvar model:String;
publicvar cameratype:String;
publicvar factory:String;
publicvar contactphonenum:String;
publicvar focallength:String;
publicvar codingstyle:String;
publicvar installationaddr:String;
publicvar installer:String;
publicvar cadurl:String;
publicvar controldistance:String;
publicvar fov:String;
publicfunction CameEntity()
{
}
}
}
这里[Bindable]是可绑定的[RemoteClass(alias="org.entity.Camerabasic")]是和Java代码中的Camerabasic类关联起来。这样就可以利用类型转换来将Java对象转换为AS对象了。
现在让我们在Flex中调用这个Java代码吧。代码如下:青色标注为重点
<?xml version="1.0" encoding="utf-8"?>
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:iframe="com.view.iframe.*"
xmlns:sgclass="com.common.globe.sgclass.*"
width="100%" height="100%" gap="0" creationComplete="init()">
【creationComplete为该组件创建完成后调用的方法】
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<s:RemoteObject id="getdataRe" destination="came">
<s:method name="getdataMe" result="getlist(event)">
</s:method>
</s:RemoteObject>
【RemoteObject的id为唯一标识,destination的值需要和java的remoting-config.xml中的destination中的id一致;s:method中的name值需要和java中的普通类中需要调用的方法名一致,result为回调函数,创建回调函数在此写逻辑方法,即在as中写】
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.controller.CameEntity;
import mx.collections.ArrayCollection;
import mx.containers.Form;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
privatefunction init():void{
getdataRe.getdataMe();
【在此init()方法中,创建组件完成调用的方法,调用的方式为RemoteObject的id为唯一标识点 s:method中的name值,即可完成调用java后台的,返回数据,给result调用函数。】
}
privatefunction getlist(event:ResultEvent):void{
dataGrid.dataProvider = event.result as ArrayCollection;
}
【写该回调函数方法,ResultEvent得到调用java后台返回的数据,将返回的数据转换类型给dataGrid组件的id值。】
]]>
</fx:Script>
<s:Group width="100%" height="60">
<mx:Canvas x="0" y="120" width="100%" height="388">
<s:Label x="5" y="1" height="26" fontSize="18" text="查询结果"/>
<mx:DataGrid x="3" y="23" width="269" height="365" id="dataGrid">
<mx:columns>
<mx:DataGridColumn dataField="name" headerText="建筑名"/>
</mx:columns>
</mx:DataGrid>
</mx:Canvas>
</s:Group>
</s:VGroup>
有不理解的可以找我:QQ:2734469636
相关推荐
Blazeds 是 Adobe 在 2008 年初推出的一个 Flex 连接 JavaEE 后台的一个产品,是 LiveCycle Data Services 的一个子集。Blazeds 提供了一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging) 技术...
1. BlazeDS和LCDS:Flex与后台通信通常借助于BlazeDS或LCDS(LiveCycle Data Services),这两个都是Adobe提供的服务器端技术,用于实现Flex与Java或.NET等后端服务的集成。BlazeDS是免费的,而LCDS提供了更高级的...
在这个"flex与后台servlet建立连接"的例子中,我们关注的是如何让Flex前端与后台的Java Servlet进行通信。Flex应用通常使用AMF(Action Message Format)或SOAP等协议与服务器进行数据交换。AMF是一种高效的数据序列...
Flex的强项之一是其强大的数据绑定机制,可以在UI组件和后台数据之间建立直接的连接。在Flex中,可以将后台返回的数据对象直接绑定到UI组件,实现数据的实时更新。 6. **错误处理和调试**: 整合过程中,错误处理...
在本文中,我们将深入探讨如何使用Flex通过RemoteObject连接后台服务,以及与之相关的其他重要Flex开发技术。Flex是一款强大的富互联网应用程序(RIA)开发框架,它允许开发者创建交互式、响应式的Web应用。让我们...
Flex作为一个强大的富互联网应用程序(RIA)开发框架,与后台服务器的交互是其核心功能之一。本文将详细探讨Flex与后台交互的四种常见方式:HTTPService、WebService、RemoteObject和URLLoader,以及它们各自的特点...
1. **配置后台服务**:首先,你需要在后台服务器上设置一个能够处理Flex请求的服务。例如,使用Java Spring、PHP或.NET等技术,创建一个RESTful API或使用AMF服务。服务应能接收Flex发送的请求,并处理与数据库的...
Flex + BlazeDS + Java 后台分页的实现是一个关键的技术环节,特别是在开发大型Web应用程序时,为了提高用户体验和系统性能,数据通常需要通过分页的方式进行加载。本方案主要探讨了如何在Flex前端和BlazeDS中间件与...
1. **LineChart**:线图是最基本的数据可视化工具之一,用于显示连续数据趋势。在Flex中,我们可以使用mx.charts.LineChart组件来创建线图。数据通常是从后台的Java类或数据库中获取,然后通过数据绑定机制显示在...
Flex是Adobe公司推出的一种基于ActionScript的开源框架,主要用于构建交互性强、用户体验良好的前端UI。而Spring则是Java领域的一个轻量级框架,它为应用程序提供依赖注入(DI)和面向切面编程(AOP)等功能,极大地...
在Flex中,可以通过WebService组件与Java后台建立连接,进而访问数据库。这种方式常用于J2EE架构中,因为J2EE平台提供了丰富的工具和框架支持WebService的开发。 3. **RemoteObject** RemoteObject是Flex中最高效...
1. **Flex基础**:Flex提供了一整套组件库,包括按钮、文本输入框、列表等,使得开发者可以快速构建具有专业外观和交互性的用户界面。MXML是一种声明式语言,用于布局组件和定义应用程序结构,而ActionScript则是一...
1. Flex应用开发: - MXML:MXML是Flex中的标记语言,用于声明UI组件和事件处理函数。在给定的代码段中,可以看到 `<s:Application>` 根标签,它是Flex应用的起点,包含了FX和Spark命名空间的声明。`<fx:Script>` ...
1. **Flex与数据库的通信基础** Flex可以通过AMF(Action Message Format)或HTTP服务与服务器进行数据交换。AMF是一种高效的数据序列化格式,常用于与Adobe LiveCycle Data Services (LCDS) 或BlazeDS进行通信。...
自己也是刚学flex不久,找了很多资料,终于整合了flex和eclipse的环境,并写了一个调用后台数据库的例子,里面有个word详细介绍了配置环境(这可不是偶写的),供大家参考,运行时候,自己先在mysql建个相应的数据库...
### 一、Flex 拍照功能与 Java 后台保存照片 #### 1. Flex 案例概述 - **标题**:“Flex 拍照案例,Java 后台保存照片” - **描述**:此案例通过 Flex 实现前端拍照功能,并将拍到的照片数据传输至后端 Java 服务器...
本篇文章将详细介绍如何使用Flex Builder和Eclipse搭建一个基于Flex的前端工程与BlazeDS作为后台通信的架构。BlazeDS是一个由Adobe提供的开源项目,主要功能是实现Java应用程序与Flex客户端之间的远程调用(Remoting...
以上就是关于"flex+java+mysql登录"这一主题的详细解释,涵盖了Flex客户端与Java后台的交互、数据库操作以及安全性的基本要点。理解并掌握这些技术,对于开发分布式应用程序具有重要的实践意义。
1. **Flex客户端开发**:Flex使用MXML和ActionScript进行界面布局和业务逻辑处理。MXML是一种声明式的XML语法,用于定义UI组件和它们的属性,而ActionScript是面向对象的脚本语言,用于控制组件行为和执行复杂业务...