Flex+J2EE实例(cairngorm+blazeDS+hibernate+spring) part4
----add cairngorm
1.添加在libs 下 添加Cairngorm.swc ,此时,具备了cairngorm框架能力
2.运用cairngorm框架
2.1 在flex_src 下创建如下文件夹 和 文件
AdminVO.as
package vo.AdminVO
{
[Bindable]
public class AdminVO
{
public var username:String;
public var password:String;
public var age:String;
public var email:String;
}
}
###################
AdminModel.as
package model.AdminModel
{
import mx.collections.ArrayCollection;
import vo.AdminVO.AdminVO;
[Bindable]
public class AdminModel
{
public var adminDatas:ArrayCollection = new ArrayCollection();
public var adminVO:AdminVO = new AdminVO();
public var value :String = '' ;
}
}
#######################
AppModelLocator.as
package model
{
import com.adobe.cairngorm.model.ModelLocator;
import model.AdminModel.AdminModel;
[Bindable]
public class AppModelLocator implements ModelLocator
{
private static var __instance:AppModelLocator = null;
public static function getInstance():AppModelLocator
{
if(__instance == null)
{
__instance=new AppModelLocator();
}
return __instance;
}
//提供单例 model
public var adminModel:AdminModel = new AdminModel();
}
}
###################
AdminEvent.as
package event.AdminEvent
{
import com.adobe.cairngorm.control.CairngormEvent;
public class AdminEvent extends CairngormEvent
{
//事件名称
public static const ADMIN_LOGIN_EVENT:String="adminLoginEvent"; //企业能耗曲线图
//事件类型
public var event_type:String="";
public function AdminEvent(type:String)
{
this.event_type=type;
super(type);
}
}
}
#################################
Services.mxml
#################################
AdminDL.as
package business.delegates
{
public class AdminDL
{
import com.adobe.cairngorm.business.ServiceLocator;
import mx.rpc.AsyncToken;
import mx.rpc.IResponder;
import mx.rpc.remoting.RemoteObject;
public var serviceLocator:ServiceLocator = ServiceLocator.getInstance();
public var _remoteobject:RemoteObject;
public var _responder:IResponder;
public function AdminDL(responder:IResponder)
{
_remoteobject = serviceLocator.getRemoteObject("adminRO");
_responder = responder;
}
public function getDate(username:String):void
{
var token:AsyncToken = _remoteobject.firstApp(username);
token.addResponder(_responder);
}
}
}
############################
AdminCommand.as
package commands.AdminCommand
{
import business.delegates.AdminDL;
import com.adobe.cairngorm.commands.ICommand;
import com.adobe.cairngorm.control.CairngormEvent;
import event.AdminEvent.AdminEvent;
import model.AppModelLocator;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.Responder;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import vo.AdminVO.AdminVO;
public class AdminCommand implements ICommand
{
private var _model:AppModelLocator = AppModelLocator.getInstance();
private var adminEvent:AdminEvent ; //or public
public function execute(event:CairngormEvent):void
{
adminEvent = event as AdminEvent;
if(adminEvent.type == AdminEvent.ADMIN_LOGIN_EVENT){
var responder:Responder = new Responder(result,fault);
var dl:AdminDL = new AdminDL(responder);
dl.getDate(_model.adminModel.adminVO.username);
}
}
private function result(e:ResultEvent):void{
if(e.result !=null)
{
/**********返回列表*************/
_model.adminModel.adminDatas.removeAll();
var tempList:ArrayCollection = e.result as ArrayCollection;
var arr:Array = tempList.toArray();
for(var a:String in arr){
var data:AdminVO = new AdminVO();
data.username = arr[a][0];
data.password = arr[a][1];
data.age = arr[a][2];
data.email = arr[a][3]
_model.adminModel.adminDatas.addItem(data);
}
}else{
Alert.show("查找失败!");
}
}
//如果请求发送不成功则执行
private function fault(e:FaultEvent):void{
Alert.show("请求发送失败!");
}
}
}
###############################
AppControl.as
package control
{
import com.adobe.cairngorm.control.FrontController;
import event.AdminEvent.AdminEvent;
import commands.AdminCommand.AdminCommand;
public class AppControl extends FrontController
{
public function AppControl()
{
super();
//注册一个事件,将其与一个命令绑定
this.addCommand(AdminEvent.ADMIN_LOGIN_EVENT,AdminCommand);
}
}
}
2.2将FlexJ2ee.mxml置于views文件夹下
修改代码如下
2.3修改FlexJ2ee.mxml的启动路径
右键FlexJ2ee.mxml
3.配置项目
3.1 将remoting-config.xml中的
com.Hello
删除
3.2 在WEB-INF下 添加 flex-servlet.xml 对flex 消息进行管理
3.2 在WEB-INF下 添加spring文件夹,并在底下创建3个配置文件
app-config.xml
#######################
infrastructure-config.xml
org.hibernate.dialect.MySQLDialect
#######################
security-config.xml
3.3 修改 web.xml为:
BlazeDS Spring Integration Application
BlazeDS Spring Integration Application
contextConfigLocation
/WEB-INF/spring/*-config.xml
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
flex.messaging.HttpFlexSession
org.springframework.web.context.ContextLoaderListener
flex
org.springframework.web.servlet.DispatcherServlet
1
flex
/messagebroker/*
index.html
index.htm
4.将项目部署至tomcat, 右键运行FlexJ2ee.mxml
在Reciver中输入 数据库中数据 lww 或者 xyp,结果如下
下载地址
http://download.csdn.net/detail/kkkloveyou/4079415