flex3.0+spring2.5+hibernate3.2

                MyEclipse6.5+MySQL5.5+flex3.0+spring2.5+hibernate3.2

 

新建Flex项目:

Project name:项目名(自己随便起名)

Application server type:后台应用程序选择J2EE

Java source folderjava文件要放的位置

点击Next——>


Target runtime:选择服务器

Flex WAR file:选择Flexjava通讯的BlazeDS.war文件(此处必须是3.2版本及以上,否则无法与spring结合)

Output folder:存放输出文件

点击Next——>

 

Output folder URL:访问路径,8585端口号要与你的Tomcat端口号一致

点击FinishFlex工程创建完成。

 

Flex工程基础上添加web应用:

选中firstFSH项目,右键——>MyEclipse——>Add Web Project Capabilities…——>

Create web.xml问你是否创建web.xml,由于创建flex工程时已经有web.xml所以现不再创建,J2EE版本选择5.0

点击Finish,这时firstFSH工程会出现两个小地球,Flexjava结合完毕。

选中firstFSH项目,右键——>Properties——>Flex Server——>

 Root URL:改成http://localhost:8585

Context root:改成/firstFSH

(注意:如果出错,点击Validate Location即可。)

点击OK

 

测试FlexJava能否正常的进行通讯。

firstFSH工程下的src包下创建com.fsh.test.HelloWorld

package com.fsh.test;

public class HelloWorld {

         public String sayHelloTo(String name) {

                   System.out.println("****** Flex+java通讯成功 *****");

                   return "Hello "+name+" !" ;

         }

}

修改remoting-config.xml文件,加入如下代码

remoting-config.xml

    <destination id="hello">

             <properties>

                          <source>com.fsh.test.HelloWorld</source>

                          <scope>application</scope>

             </properties>

</destination>



 

 

编写firstFSH.mxml页面文件,代码如下

firstFSH.mxml

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

         <mx:Script>

                   <![CDATA[

                            import mx.collections.ArrayCollection;

                            import mx.rpc.events.FaultEvent;

                            import mx.rpc.events.ResultEvent;

                            import mx.controls.Alert ;

                            private function sayHelloTo():void {

                                     say.addEventListener(ResultEvent.RESULT, getResultHandler) ;

                                     say.sayHelloTo("张三") ;

                            }

                            private function getResultHandler(evt:ResultEvent):void {

                                     say.removeEventListener(ResultEvent.RESULT, getResultHandler) ;

                                     if(evt.result != null) {

                                               Alert.show(evt.result.toString()) ;

                                     } else {

                                               Alert.show("Exception") ;

                                     }

                            }

                   ]]>

         </mx:Script>

         <mx:RemoteObject id="say" destination="hello" />

         <mx:Panel x="338" y="83" width="578" height="391" layout="absolute">

                   <mx:HBox x="10" y="10" width="100%">

                            <mx:Button label="测试FlexJava通讯" width="170" fontSize="13" click="sayHelloTo() ;"/>

                   </mx:HBox>

         </mx:Panel>

</mx:Application>

 

右键选中firstFSH工程——>Run As(运行)——>

Flex3.0Java5.5结合成功,可以正常通讯

 

加入Spring2.5

右键选中firstFSH工程——>MyEclipse——>Add Spring Capabilities…——>

选中Spring2.5

选中红框内的5个选项

选中Copy checked Library contents to project folder (TLDs always copied)

点击Next——>

选中FinishSpring2.5加载完毕。

 

现测试Spring2.5加载的是否正确

src下建立com.fsh.common.factory包,将附件中的SpringFactory.java工厂类放入该包下

 

 

web.xml中加载Spring管理

web.xml

<context-param>

<param-name>contextConfigLocation</param-name>

           <param-value>/WEB-INF/classes/applicationContext.xml</param-value>

      </context-param>

      <listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

      </listener>

在与remoting-config.xml并列的service-config.xml文件中加入如下代码

services-config.xml

<factories>

 <factory id="spring" class="com.wingo.myfirstfsh.common.SpringFactory"/>

</factories>

remoting-config.xml文件中加入如下代码

remoting-config.xml

    <destination id="hello">

             <properties>

                       <factory>spring</factory>

                          <source>helloWorld</source>

             </properties>

</destination>

 

运行项目——>

此时Flex3.0+Spring2.5配置完成。

 

Mysql5.5下创建t_user表字段如下

添加两条数据

MyEclipse右上角切换视图——>MyEclipse Database Explorer——>新建数据库连接

 

DB Browser空白处右键——>New——>

Driver template:选择你选应用的数据库

Driver name:随便起名称

Connection URL:数据库连接,user_db是你的数据库名称

Add JARs:添加数据库连接所需的驱动包(附件中有)

此时可以点击Test Driver进行测试连接是否成功

点击Finish,会生成一个aaa连接对象,如下图aaa



 

 

将视图切换回Flex Development

右键选中firstFSH工程——>Add Hibernate Capabilities…——>

 

选中Hibernate3.2

选中红框中的两项MyEclipse Libraries

选中Copy checked Library Jars to project folder and add to build-path

点击Next——>

 

选中Spring configuration file (applicationContext.xml)管理(因为前面已经加入Spring

点击Next——>

 

选中Existing Spring configuration file(因为项目中已经存在applicationContext.xml文件,所以此处不需要新建该文件)

SessionFactory Id:输入Session工厂ID属性

点击Next——>

Bean Id:数据库连接ID

DB Driver:选择你刚刚建立的数据库连接对象

点击Next——>

 

勾去Create SessionFactory class(交给Spring管理)

点击Finish

 

firstFSH工程下创建daopo包,具体如下

 

切换数据库连接视图

右键选中t_user表——> Add Hibernate Capabilities——>

 点击Next——>

 

Id Generator:主键发生器,选中native本地

点击FinishHibernate加载完毕。

 

现进行测试Hibernate加载的是否正确以及Flex+Spring+Hibernate是否成功

 

调整java端代码结构

po包下的TUserDAO放到dao.impl包下,同时修改applicationContext.xml中的TUserDAO做出修改

dao包下创建IUserDAO接口

 

点击Finish——>如下

 

在上述接口中加入public List<TUser> findAll() 抽象方法

同时修改dao.impl.TUserDAO实现IUserDAO接口


com.fsh.service包下加入IUserService接口,在com.fsh.service.impl包下加入UserServiceImpl类实现IuserService接口

 

IUserService接口:

package com.fsh.service;

import java.util.List;

import com.fsh.po.TUser;

public interface IUserService {

         public List<TUser> findAll() ;

}

UserServiceImpl实现类:

package com.fsh.service.impl;

 

import java.util.List;

import com.fsh.dao.IUserDAO;

import com.fsh.po.TUser;

import com.fsh.service.IUserService;

 

public class UserServiceImpl implements IUserService{

         private IUserDAO iuserDao ;

         public IUserDAO getIuserDao() {

                   return iuserDao;

         }

         public void setIuserDao(IUserDAO iuserDao) {

                   this.iuserDao = iuserDao;

         }

         public List<TUser> findAll() {

                   // TODO Auto-generated method stub

                   return this.iuserDao.findAll();

         }

}

 

applicationContext.xml加入以下代码

         <bean id="userService" class="com.fsh.service.impl.UserServiceImpl">

                   <property name="iuserDao">

                            <ref local="TUserDAO"/>

                   </property>

         </bean>

 

Remoting-config.xml加入以下代码

    <destination id="userService">

             <properties>

                       <factory>spring</factory>

                          <source>userService</source>

             </properties>

</destination>

 

为以后的维护和代码结构整洁,现将flex端做出如下的MVC调整:

按照下图在flex_src包下建立control.UserCtrlevents.UserEventmodel.UserModelvo.UserVO四个AS

 

UserVO.as视图VO类,与Javapo.TUser类对应:

package vo

{

         [Bindable]

         public class UserVO

         {

                   public var num:Number;           //序号

                  

                   public var uid:int;

                   public var uname:String;

                   public var upassword:String;

                   public var usex:String;

                   public var uage:int;

                  

                   public function fill(obj:Object):void{

                            for(var i:* in obj){

                                     this[i]=obj[i];

                            }

                   }

         }

}

 

UserEvent.as自定义事件类:

package events

{

         public class UserEvent

         {

                   public static const showSucs:String = "showSucs" ;

                   public static const showFail:String = "showFail" ;

         }

}

 

UserModel.as主要用来绑定视图VO对象:

package model

{

         import flash.events.EventDispatcher;

         import mx.collections.ArrayCollection;

         [Bindable]

         public class UserModel extends EventDispatcher  {

                   private static var _userModel:UserModel;

                   public static function getInstance():UserModel {

                            if(_userModel == null) {

                                     _userModel = new UserModel() ;

                            }

                            return _userModel ;

                   }

                   public var userList:ArrayCollection ;

         }

}

 

UserCtrl.as控制层:

package control

{

import vo.UserVO;

         import events.UserEvent;

         import flash.events.Event;

         import model.UserModel;

        

         import mx.collections.ArrayCollection;

         import mx.controls.Alert;

         import mx.rpc.events.FaultEvent;

         import mx.rpc.events.ResultEvent;

         import mx.rpc.remoting.RemoteObject;

         import mx.managers.CursorManager;

        

         public class UserCtrl

         {

                   private var _userService:RemoteObject = null ;

                   private var _userModel:UserModel = UserModel.getInstance() ;

                   public function UserCtrl()

                   {

                            _userService = new RemoteObject() ;

                            _userService.destination = "userService" ;

                            _userService.addEventListener(FaultEvent.FAULT, faultHandler) ;

                   }

                  

                   private function faultHandler(evt:FaultEvent):void {

                            Alert.show(evt.fault.toString()) ;

                   }

                  

                   public function findAll():void {

                            _userService.findAll.addEventListener(ResultEvent.RESULT, resultHandler) ;

                            _userService.findAll.send() ;

                            CursorManager.setBusyCursor();

                   }

                   private function resultHandler(evt:ResultEvent):void {

                            if(evt.result != null) {

                                     this.getUserListResult(evt.result) ;

                            } else {

                                     _userModel.dispatchEvent(new Event(UserEvent.showFail));

                            }

                            CursorManager.removeBusyCursor();

                            _userService.removeEventListener(ResultEvent.RESULT, resultHandler) ;

                   }

                   private function getUserListResult(datas:Object):void {

                            var info:ArrayCollection = new ArrayCollection() ;

                            for(var i:Object in datas) {

                                     var uvo:UserVO = new UserVO() ;

                                     uvo.num = Number(i)+1 ;

                                     uvo.fill(datas[i]) ;

                                     info.addItem(uvo) ;

                            }

                            _userModel.userList = info ;

                            _userModel.dispatchEvent(new Event(UserEvent.showSucs));

                   }

         }

}

 

修改firstFSH.mxml类,代码如下:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

         <mx:Script>

                   <![CDATA[

                            import events.UserEvent;

                            import model.UserModel;

                            import control.UserCtrl;

                            import mx.collections.ArrayCollection;

                            import mx.rpc.events.FaultEvent;

                            import mx.rpc.events.ResultEvent;

                            import mx.controls.Alert ;

                           

                            private var _theUserCtrl:UserCtrl = new UserCtrl();

                            [Bindable]

                            private var _theUserModel:UserModel = UserModel.getInstance();

                           

                            private function sayHelloTo():void {

                                     say.addEventListener(ResultEvent.RESULT, getResultHandler) ;

                                     say.sayHelloTo("张三") ;

                            }

                            private function getResultHandler(evt:ResultEvent):void {

                                     say.removeEventListener(ResultEvent.RESULT, getResultHandler) ;

                                     if(evt.result != null) {

                                               Alert.show(evt.result.toString()) ;

                                     } else {

                                               Alert.show("Exception") ;

                                     }

                            }

                           

                            private function findAll():void {

                                     _theUserModel.addEventListener(UserEvent.showSucs, resultHandler) ;

                                     _theUserModel.addEventListener(UserEvent.showFail, resultHandler) ;

                                     _theUserCtrl.findAll();

                            }

                            private function resultHandler(evt:Event):void {

                              _theUserModel.removeEventListener(UserEvent.showSucs,resultHandler) ;

                              _theUserModel.removeEventListener(UserEvent.showFail,resultHandler) ;

                                     if(evt.type == UserEvent.showSucs) {

                                               userList_dg.dataProvider = _theUserModel.userList ;

                                     } else if(evt.type == UserEvent.showFail) {

                                               Alert.show("ERROR") ;

                                     }

                            }

                           

                            private function doClear():void {

                                     userList_dg.dataProvider = _theUserModel.userList = null ;

                            }

 

                   ]]>

         </mx:Script>

        

         <mx:RemoteObject id="say" destination="hello" />

        

         <mx:Panel x="338" y="83" width="578" height="391" layout="absolute">

                   <mx:HBox x="10" y="10" width="100%">

<mx:Button label="测试FlexJava通讯" width="170" fontSize="13" click="sayHelloTo() ;"/>

                   </mx:HBox>

                   <mx:HBox x="10" y="44" width="100%">

                            <mx:Button label="查看" id="showUser" click="findAll() ;" fontSize="12" width="102"/>

                            <mx:Button label="清空" click="doClear() ;" fontSize="12" width="108"/>

                   </mx:HBox>

                   <mx:HBox width="100%" x="10" y="72">

                            <mx:DataGrid textAlign="center" fontWeight="bold" fontSize="12" id="userList_dg">

                                     <mx:columns>

                                               <mx:DataGridColumn headerText=" "  dataField="num"/>

                                               <mx:DataGridColumn headerText=" "  dataField="uname"/>

                                               <mx:DataGridColumn headerText=" "  dataField="usex"/>

                                               <mx:DataGridColumn headerText=" "  dataField="uage"/>

                                     </mx:columns>

                            </mx:DataGrid>

                   </mx:HBox>

         </mx:Panel>

</mx:Application>

 

工程运行——>

  

出现上述错误的解决办法:

applicationContext.xml中的<beans>头里加入如下代码即可

default-autowire="byName" default-lazy-init="true"

 

 

再运行——>

 

出现上述异常是由于springHibernateasm.jar包冲突造成的

解决办法:

将删除工程WEB-INF/lib下的asm-2.2.3.jar包,刷新项目,重启tomcat

 

再运行——>

 

 

至此flex3.0+spring2.5+hibernate3.2配置完成!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值