快速搭建flex+spring+hibernate.docx
- 文档编号:3446472
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:18
- 大小:338.25KB
快速搭建flex+spring+hibernate.docx
《快速搭建flex+spring+hibernate.docx》由会员分享,可在线阅读,更多相关《快速搭建flex+spring+hibernate.docx(18页珍藏版)》请在冰豆网上搜索。
快速搭建flex+spring+hibernate
快速搭建flex+spring+hibernate
一、Flex环境搭建
1.1所需软件
1.需要安装Eclipse或MyEclipse。
2.需要安装Flex对Eclipse的插件:
FB3_WWEJ_Plugin.exe。
a)安装过程中,需要指定Eclipse的安装目录,如果本机装的是MyEclipse,则在指定目录时,不是指定MyEclipse的目录,而是MyEclipse安装目录下的eclipse目录。
3.需要下载BlazeDS的包:
blazeds-bin-3.2.0.3978.zip
1.2新建Flex项目
在安装好Flex对Eclipse的插件后,打开Eclipse或MyEclipse,操作如下:
弹出如下界面:
点击“下一步”,出现如下界面:
1.这里,如果当前工作区中没有配置服务器,就点击右上角的“New…”。
这里配置的服务器没有意义,但是不配置就新建不了Flex项目。
2.Contextroot和ContentFolder这里必须一致,否则后面在和Java通讯时会出错,这里强烈建议,和项目名称完全一致。
3.FlexWARfile这里选择BlazeDS的包中,解压出来的那个blazeds.war。
4.Outputfolder这里是编译后的文件所在路径,强烈建议将这里的路径写成“项目名称\bin-debug”这样的目录下,一定要在“项目名称”目录下,才好访问,至于后面的“bin-debug”就无所谓写成什么名字了。
5.然后点击Next,出现如下界面:
然后Finish,生成的项目结构如下:
1.3将Flex转为Web项目
只有转后,Flex项目才能部署到服务器中。
转换过程如下:
然后将弹出界面设置为符合如下内容:
Finish即可。
这样,这个项目就可以直接像普通Web项目一样部署在各个服务器中了。
将附件flex-lib/*中的包加入如下图的flex_libs
二、构建后台包/类结构:
后台的配置有两种:
1、普通的SH配置。
(如附件demo中的RightManage)2、基于注解的配置。
(如附件demo中的CreatePrice)
三、前台与后台通信的配置
1、配置spring监听
首先在web.xml中添加配置spring监听器以启动spring
--Spring的配置文件-->
spring.xml
org.springframework.web.context.ContextLoaderListener
--Spring的配置文件-->
2、配置SpringFactory
先写一个SpringFactory.java类,然后在web-inf/flex/services-config.xml
的services-config节点中添加配置SpringFactory,配置如下:
--springFactory的配置-->
3、配置远程对象
如果后台Javaspring配置如下
class="com.createprice.serviceimpl.DrugstoreServiceImpl"> 在远程对象配置文件web-inf/flex/remoting-config.xml中配置如下: --药企--> --药企--> 四、前台使用远程对象进行通信 1、构建前台包结构 前台结构如下图 2、在Flex中配置远程对象 要使用远程对象先要在如上图mapping中添加文件 其主要作用是让flex中的对象关联映射到Java对象。 内容如下: xmlversion="1.0"encoding="utf-8"? > ServiceLocatorxmlns: mx="xmlns: cairngorm=" RemoteObjectid="drugstoreService"destination="drugstoreService"/> ServiceLocator> 这里的destination对应remoting-config.xml配置的destination 3、引入远程对象 在首页 引入配置如下: RemoteObjectMapping/> Mapping/> 第一个 RemoteObjectMapping/>引入的目的是加载远程对象的配置;第二个是 Mapping/>用于Flex控制跳转(后面使用的时候讲)。 好了,到此为止配置完成,接下来就是如何来使用。 五、Cairngorm框架结合远程通信的使用 写代码的顺序为 Entity(实体类)Supply(代理类)model(模型类)controller(控制器类)mapping(映射类)event(事件类)使用类 刚好调用顺序相反 下面讲代码,按照调用顺序来(除实体类,因为实体类在每个类中都有可能用到,但它必须先写好,后面的才能用。 ) 1、使用类(即一般的窗体类、as类等) 1)作用: 真正使用的类。 2)如何做? 如下一个查询所有药企的方法 //查看所有药企信息 publicfunctionqueryAllDrugstore(): void{ vardrugstoreEven: CommonEvent=newCommonEvent("query_allDrugstore"); //这句话比较难记,可以看文档 CairngormEventDispatcher.getInstance().dispatchEvent(drugstoreEven); } 注: CommonEvent类即事件类,通过new一个事件类,将构造器中newCommonEvent("query_allDrugstore");query_allDrugstore映射到mapping中;同时CommonEvent类可以携带参数,如下: //增加药企 publicfunctionaddDrugstore(event: MouseEvent): void{ vardrugstore: Drugstore=newDrugstore(); drugstore.drugName=this.drugName.text; vardrugstoreEvent: CommonEvent=newCommonEvent("add_drugstore"); drugstoreEvent.drugstore=drugstore; //这句话比较难记,可以看文档 CairngormEventDispatcher.getInstance().dispatchEvent(drugstoreEvent); } 2、event事件类(继承CairngormEvent) 1)作用: 一是用于映射控制类;二是传递参数到控制类。 2)如何做? 代码如下: packageevent { importcom.adobe.cairngorm.control.CairngormEvent; importentity.Drugstore; importmx.collections.ArrayCollection; publicclassCommonEventextendsCairngormEvent { /*-------------分页------------*/ publicvarstart: int; publicvarsize: int; publicvardate: String; /*-------------分页------------*/ /*-------------药企-----------*/ publicvardrugstore: Drugstore; publicvardrugstoreList: ArrayCollection; publicvardates: ArrayCollection; /*-------------药企------------*/ publicfunctionCommonEvent(type: String,bubbles: Boolean=false,cancelable: Boolean=false) { super(type,bubbles,cancelable); } } } 3、mapping映射类(继承FrontController) 1)、作用: 用于将前台的请求映射到不同的控制器类。 2)、如何做? 代码如下: packagemapping { importcom.adobe.cairngorm.control.FrontController; importcontroller.VaccineCategory.DeleteVCCtrl; importcontroller.VaccineCategory.FenYeVCCtrl; importcontroller.VaccineCategory.GetTotalVCCtrl; importcontroller.VaccineCategory.InsertVCCtrl; importcontroller.VaccineCategory.QueryVaccineCategoryCtrl; importcontroller.VaccineCategory.UpdateVCCtrl; importcontroller.vape.GetVCController; publicclassMappingextendsFrontController { publicfunctionMapping() { /*--------vc-------*/ this.addCommand("query_vc",QueryVaccineCategoryCtrl); this.addCommand("fenye_vc",FenYeVCCtrl); this.addCommand("getTotal_vc",GetTotalVCCtrl); this.addCommand("delete_vc",DeleteVCCtrl); this.addCommand("update_vc",UpdateVCCtrl); this.addCommand("insert_vc",InsertVCCtrl); /*--------vc-------*/ } } } 4、controller控制器类(实现ICommand,IResponder) 1)、作用: 一是对台数据进行处理;二是控制类的跳转;三是处理返回结果,绑定结果到模型(这一步根据需求)。 2)、如何做? 代码如下: packagecontroller.drugstore { importmands.ICommand; importcom.adobe.cairngorm.control.CairngormEvent; importevent.CommonEvent; importmodule.DrugstoreModule; importmx.controls.Alert; importmx.rpc.IResponder; importsupply.drugstoreSupply; publicclassGetTotalDrugstoreControllerimplementsICommand,IResponder { publicfunctionGetTotalDrugstoreController() { } //处理请求,自动运行的方法 publicfunctionexecute(event: CairngormEvent): void { //1、台数据进行处理 vardrugstoreEvent: CommonEvent=eventasCommonEvent; vardate: String=drugstoreEvent.date; //2、产生代理类 vardrugstore_supply: drugstoreSupply=newdrugstoreSupply(); //3、调用不同的方法,控制类的跳转 drugstore_supply.getTatol(date,this); } //无异常时返回的方法 publicfunctionresult(data: Object): void { //4、处理返回结果 vartotalSize: int=int(data.result) //5、绑定结果到模型(这一步根据需求) vardrugstoreModule: DrugstoreModule=DrugstoreModule.getInstance(); drugstoreModule.tatolCount=totalSize; } //发生异常时返回的方法 publicfunctionfault(info: Object): void { } } } 5、model模型类(实现ModelLocator) 1)、作用: 这个类为一个单例模式,主要是用于绑定数据。 2)、如何做? 代码如下: packagemodel { importcom.adobe.cairngorm.model.ModelLocator; importmx.collections.ArrayCollection; //这个类需要绑定 [Bindable] publicclassInstitutionModelimplementsModelLocator { publicfunctionInstitutionModel() { } //类的属性,用于存放数据 privatestaticvar_self: InstitutionModel; publicvarinstiList: ArrayCollection; publicvartotal: int; //单例函数 publicstaticfunctiongetInstance(): InstitutionModel{ if(null==InstitutionModel._self){ InstitutionModel._self=newInstitutionModel(); } returnInstitutionModel._self; } } } 6、Supply代理类(一般as类) 1)、作用: 接收前台请求,将请求传递到后台java中执行。 2)、如何做? 代码如下: packagesupply { importcom.adobe.cairngorm.business.ServiceLocator; importmx.rpc.AsyncToken; importmx.rpc.IResponder; publicclassInstitutionSupply { publicfunctionInstitutionSupply() { } publicfunctionqueryAllInsti(iResponder: IResponder): void{ //用于获得远程对象 varserviceLocator: ServiceLocator=ServiceLocator.getInstance(); //获得远程对象,"insti"为RemoteObjectMapping.mxml中的id varresultHandlerService: Object=serviceLocator.getRemoteObject("insti"); //用于调用远程对象,即后台java类的方法。 下面红色方法名为java类的方法名 varresultHandler: AsyncToken=resultHandlerService.queryAllInstituionService(); resultHandler.addResponder(iResponder); } } } 7、Entity实体类(一般as类) 1)、作用: 用于映射后台Java实体类,在前台作为数据参数来使用。 2)、如何做? packageentity { //这里绑定的是后台java实体类的路径 [RemoteClass(alias="com.VaccinePriceApplySys.entity.vaccinepriceapply.VaccinePriceApply")] publicclassVaccinePriceApply { publicfunctionVaccinePriceApply() { } publicvarapplyId: int;//备案ID publicvarvaccineCategoryId: int;//目录ID publicvarinstiId: int;//企业ID publicvarlevel: String;//产品质量层次 publicvarsuppliers: String;//供应商 publicvardistributionCenters: String;//配送企业 publicvarpurchasePrice: String;//购进价格 publicvarsalePrice: String;//销售价格 publicvarlastSalePrice: String;//去年销售价格 publicvarlastSales: String;//去年销售量 publicvarSPDL: String;//销售环节差价率 publicvarSRWS: String;//批发环节差价率 publicvarsupplyPrice: String;//供应价 publicvarmaximumPrice: String;//拟定的最高零售价格 publicvarnotes: String;//备注 publicvardeclareDate: String;//申报日期 publicvarauditStatus: String;//审核状态 publicvarauditDate: String;//审核日期 publicvarreason: String;//理由 } } 8、在使用时要注意的事项。 1)、不要忘记在主页中引入映射文件。 (即第四的第3小点) RemoteObjectMapping/> Mapping/> 2)、在新增对象时,不要忘记在remoting-config.xml、RemoteObjectMapping.mxml中配置远程对象。 3)、在实体类中不要忘记绑定后台java的实体类。 4)、CommonEvent是继承CairngormEvent。 5)、第一次创建mapping时,不要忘记它是继承FrontController。 6)、代理类中使用的远程对象id是RemoteObjectMapping.mxml的id。 调用的方法是后台java的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 快速 搭建 flex spring hibernate