在常规的开发中只是用flex二不和后台交互是不可能的,为此flex也提供了和后台交互的2种解决方案一种是Data Services另一种是BlazeDs,本篇博客是用的是后一种,我的开发步骤如下:

1.下载BlazeDs的war包,下载war包需要注册,下载地址如下:

https://www.adobe.com/cfusion/entitlement/index.cfm?e=lc_blazeds

2.解压或者部署war包,把WEB-INF下面的flex文件夹复制到项目的WEB-INF下面,把lib里面的所有jar包和目标项目合并

3.下载spring整合flex的jar包,下载地址是:

http://www.springsource.org/spring-flex/

下载好后把dist下面的jar包复制到项目的lib下面

4.编写处理后台数据的代码,java类也交给spring来处理,下面是我的xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="flexPlanService" class="org.lxh.module.plan.flex.FlexPlanManagerImpl">
<property name="planManager" ref="planManager"/>
</bean>
</beans>

5.编写spring和flex交互的主要配置文件,文件名称见名知义就行,配置大致如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:flex="http://www.springframework.org/schema/flex"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"> <bean id="_messageBroker" class="org.springframework.flex.core.MessageBrokerFactoryBean" >
<property name="servicesConfigPath" value="WEB-INF/flex/services-config.xml"/>
</bean> <!--spring mvc配置,所有请求都由_messageBroker处理-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>/*=_messageBroker</value>
</property>
</bean>
<bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter"/> <!-- destination-id是目标ID 这个名称在mxml页面上会被用到-->
<flex:remoting-destination ref="flexPlanService" destination-id="flexPlanService"/> </beans>

最后一行的ref熟悉就不介绍了,一般学过spring的都知道怎么用

6.在web.xml加入springmvc配置把上面的交互文件交给spring管理,配置如下

<!-- SpringMVC配置 -->
<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-flex.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>

7.给项目添加flex支持

(1)鼠标右击项目,找到Add Flex  project  type,如下所示

(2)在出现的窗口选择下一步,如下所示

(3)点击“下一步”进入下一个配置界面

需要注意的是Root folder,这里选择项目的根目录即可,选好后要注意点击“validate configuration”按钮验证配置,验证成功后,点击finish之后可能会报错,在problems里找到error,右键点击选择重建html-template即可

(4)这一步是可选的,一般我们把flex的main source folder换成别的

(5)这一步也是可选的,我们一般把webcontent或者webroot作为flex的输出目录

改动之后也是需要验证的,验证成功即可

8.编写flex页面,我这里只是简单的用表格显示出所有的部门信息,页面代码如下

<?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="300" minHeight="300" initialize="init()">
<fx:Declarations>
<!-- 这里的的destination对应spring配置文件里的destination-id-->
<s:RemoteObject id="planServiceRO" destination="flexPlanService" endpoint="/myssm/messagebroker/amf">
<!-- name对应的是bean里的接口方法 result配置的actionscript类似回调函数-->
<s:method name="getAllPlan" result="getAllPlansSuccess(event)"/>
</s:RemoteObject>
</fx:Declarations>
<fx:Script>
<![CDATA[ import com.adobe.serialization.json.JSON
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.events.FlexEvent;
import mx.events.ListEvent;
import mx.managers.PopUpManager;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private function init():void{ planServiceRO.getAllPlan(); }
//把数据绑定到表格里,数据类型使用的是json,此处需要一个叫as3corelib.swc的类库文件 ,把它放在libs目录里即可
private function getAllPlansSuccess(event:ResultEvent):void{
var planData:ArrayCollection=new ArrayCollection(com.adobe.serialization.json.JSON.decode(event.result.toString()));
planDataGrid.dataProvider=planData;
}
]]>
</fx:Script>
<mx:DataGrid id="planDataGrid" x="500" y="200" width="300" height="300"
allowMultipleSelection="true" alternatingItemColors="[0xe3eaf2,0xe8f1f8]">
<mx:columns>
<!-- dataField属性配置的是json的key -->
<mx:DataGridColumn dataField="fid" headerText="部门ID" showDataTips="true"/>
<mx:DataGridColumn dataField="fname" headerText="部门名称" showDataTips="true"/> </mx:columns>
</mx:DataGrid>
</s:Application>

下面我把自己的业务实现类代码贴出来,这个方法拼接了json字符串

package org.lxh.module.plan.flex;

import java.util.*;

import org.lxh.module.plan.dao.PlanManager;
import org.lxh.module.plan.info.PlanInfo; public class FlexPlanManagerImpl implements FlexPlanManager {
private PlanManager planManager;
public PlanManager getPlanManager() {
return planManager;
}
public void setPlanManager(PlanManager planManager) {
this.planManager = planManager;
}
public String getAllPlan() {
List<Map> json=new ArrayList<Map>();
List<PlanInfo> all=planManager.getAllPlan();
Iterator<PlanInfo> it=all.iterator();
while(it.hasNext()){
PlanInfo p=it.next();
Map<String,Object> map=new HashMap<String,Object>();
map.put("\"fid\"", "\""+p.getFID()+"\"");
map.put("\"fname\"", "\""+p.getFNAME()+"\"");
json.add(map);
}
return json.toString().replaceAll("=", ":");
}
}

只有学懂了spring要整合spring是不是很简单呢,来看下我的效果图

下面再把我的ibatis配置文件贴出来给大家看看

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="PlanInfo">
<resultMap id="resultMap" type="org.lxh.module.plan.info.PlanInfo">
<result property="fID" column="fID"/>
<result property="fNAME" column="fNAME"/>
</resultMap>
<select id="getAllPlan" parameterType="org.lxh.module.plan.info.PlanInfo" resultMap="resultMap">
select * from m_depart
</select>
</mapper>

下面是我oracle里的数据表

spring整合flex的更多相关文章

  1. Spring 整合 Flex (BlazeDS)无法从as对象 到 Java对象转换的异常:org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.util.Date' to required type 'java.sql.Timestamp' for property 'wfsj'; nested exception is java.lang.Ill

    异常信息如下: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value ...

  2. 1、Shiro 安全框架与Spring 整合详解

    Apache Shiro 是一个安全认证框架,和 Spring Security 相比,在于他使用了比较简洁易懂的认证和授权方式.其提供的 native-session(即把用户认证后的授权信息保存在 ...

  3. 使用Spring整合Quartz轻松完成定时任务

    一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...

  4. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】

    一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...

  5. spring整合hibernate的详细步骤

    Spring整合hibernate需要整合些什么? 由IOC容器来生成hibernate的sessionFactory. 让hibernate使用spring的声明式事务 整合步骤: 加入hibern ...

  6. Spring整合Ehcache管理缓存

    前言 Ehcache 是一个成熟的缓存框架,你可以直接使用它来管理你的缓存. Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现.它 ...

  7. spring整合hibernate

    spring整合hibernate包括三部分:hibernate的配置.hibernate核心对象交给spring管理.事务由AOP控制 好处: 由java代码进行配置,摆脱硬编码,连接数据库等信息更 ...

  8. MyBatis学习(四)MyBatis和Spring整合

    MyBatis和Spring整合 思路 1.让spring管理SqlSessionFactory 2.让spring管理mapper对象和dao. 使用spring和mybatis整合开发mapper ...

  9. Mybatis与Spring整合,使用了maven管理项目,作为初学者觉得不错,转载下来

    转载自:http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype ...

随机推荐

  1. NIO框架之MINA源码解析(转)

    http://blog.csdn.net/column/details/nio-mina-source.html http://blog.csdn.net/chaofanwei/article/det ...

  2. perl lwp 默认的请求头

    </pre><pre name="code" class="html">[root@dr-mysql01 ~]# cat getx.pl ...

  3. JAVA的反射机制学习笔记(二)

    上次写JAVA的反射机制学习笔记(一)的时候,还是7月22号,这些天就瞎忙活了.自己的步伐全然被打乱了~不能继续被动下去.得又一次找到自己的节奏. 4.获取类的Constructor 通过反射机制得到 ...

  4. Swift - 类初始化和反初始化方法(init与deinit)

    1,init():类的初始化方法(构造方法) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...

  5. ubuntu12.10下arm-linux-gcc交叉编译环境的搭建

    交叉编译环境搭建的原因:通俗上讲,因为嵌入式系统可用资源比较少:几十M的ARM 二三百M的flash相对我们的pc机来说资源真的没法比.所以,为了解决这种局面就将PC机等作为主机,搭建开发环境,进行编 ...

  6. NET单元测试的艺术

    NET单元测试的艺术 开篇:上一篇我们学习基本的单元测试基础知识和入门实例.但是,如果我们要测试的方法依赖于一个外部资源,如文件系统.数据库.Web服务或者其他难以控制的东西,那又该如何编写测试呢?为 ...

  7. Lua学习笔记9:多文件

    一 终端中运行多个文件:-l 增加在文件一中定义了一个变量,在还有一文件里输出这个变量.代码例如以下: --file1.lua num = 100 --file2.lua print(num) 终端输 ...

  8. 整理自百度知道提问的几道Java编程题

    蚂蚁爬杆 问题描述: 有一根27厘米的细木杆,在第3厘米.7厘米.11厘米.17厘米.23厘米这五个位置上各有一只蚂蚁.木杆很细,不能同时通过一只蚂蚁.开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝 ...

  9. cisco路由器IPSEC VPN配置(隧道模式)

    拓扑如下: R1配置hostname R1enable password cisco  crypto isakmp policy 1        #创建IKE协商策略,编号为1 encr 3des  ...

  10. 使用notepad运行python

    Notepad++ 是一个开源的文本编辑器,功能强大而且使用方便,一般情况下,Notepad++作为代码查看器,很方便,但是每次要运行的时候,总是需要用右键打开其他的IDE来编译和运行,总有些不方便. ...