MyEclipse+Flex+BlazeDS+Spring+Hibernate简单实例的部署过程

本文详细介绍了一种将Flex与Spring框架集成的方法,并通过一个具体的登录示例进行了实践演示。从搭建开发环境开始,逐步介绍了如何配置数据库连接、部署BlazeDS服务、整合Spring与Hibernate,最终实现Flex应用与后端服务的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文系转载,转载了下面这篇文章,但是修改了其中一处错误,我会在最下面指明:

 

转载文章的URL:http://bbs.airia.cn/home-space-uid-76976-do-blog-id-2710.html

 

1、 新建Web Project

新建web project

Project name命名自定,这里设定为:FlexProjectJ2EE级别选择1.5,因为之后要跟Flex集成,所以source folder最好更改一下,这里改为:java_src,如图2

                                

 

2 web project设定

2、 项目上右键,在MyEclipse的子菜单,选择增加Spring特性。

选择增加Spring特性

   

选择必要的Spring库,并选中:Copy checked Library contents to project folder(TLDs aways copied),会自动将需要的jar包都复制到/WEB-INF/lib文件夹下,方便单独发布。

新增Spring特性第一步

点击Next后,在默认选项下,根据自己的习惯,选择放置applicationContext.xml的位置,如需更改,点击Browse,如图5、图6所示。

增加Spring特性第二步

选择放置applicationContext.xml的位置

3、 部署BlazeDS服务,下载BlazeDS文件后,解压缩blazeds.war,得到一个文件夹

7 BlazeDS部署第一步

blaze文件夹下的两个目录拷贝到\FlexProject\WebRoot,覆盖同名目录。

8 BlazeDS部署第二步

4、在MyEclipse中配置数据库源,选择MyEclipse Database Explorer,如果不能在快速切换栏里找到,可以进Windos-Open Perspective-Other中找到如图9所示。

选择MyEclipse Database Explorer透视图

在右侧的DB Browse里右键,新建一个数据库连接。

10 新建数据库连接。

Driver template中选择你的数据库类型,Driver name自定,Connection URL

需要使用正确的路径,如现在的程序里是:jdbc:mysql://localhost:3306/apress,所以要将<hostname><dbname>替换为正确的名称,填写好User name Password,这里的用户名和密码指的是数据库的登录名与密码,点击Add JARS,选择已经下载到本地的数据库连接jar包,这里是mysql-connector-java-5.1.10-bin.jar

11 配置数据库连接参数

 

点击Test Driver,测试是否接通。

12 数据库连接成功

 

点击Next,接受默认选项,点击finish,完成配置。

13 数据库连接配置完成

5、 refresh项目,右键MyEclipse选择子菜单,增加Hibernate特性。

14 增加Hibernate特性第一步

    之前选择了Spring2.5,这里会提示需要Spring-Hibernate包支持,选中需要的库,选择Enable Hibernate Annotations Support,方便以后使用到,同时选中Copy checked Library Jars to project folder and add to build-path,点击Next

15 增加Hibernate特性第二步

   这里可以选择使用单独的Hibernate cfg文件进行Hibernate的管理,或者直接集成SpringapplicationContext.xml中,这里使用后者。

16 增加Hibernate特性第三步

    选择Existing Spring configuration fileSessionFactory ID可以随意。

17 增加Hibernate特性第四步

点击下一步,这里选择需要的DB Driver,选中Enable dynamic DB table creation。点击next

18 增加Hibernate特性第五步

    配置HibernateSessionFactory类放置路径,可以点击new,使用Spring情况下不用Create SessionFactoryclass,所以可以吧勾选去掉,如果需要创建,可以新建一个包,这里新建包com.coarrow.hibernate.sessionFactory

 

19 增加Hibernate特性第六步

   

确定后finish,可能会提示jar包重复,点击replace即可。

20 jar包的重复提示

6、 部署web服务,点击MyEclipse的部署按钮。

21 部署web服务第一步

    Project选择当前的项目:FlexProject,点击Add

22 部署web服务第二步

选择需要的Server,这个Server可以在Window-preferences中配置,也可以直接点击Edit server connectors进行配置。

23 部署web服务第三步

点击finishi,完成部署。

24 完成web服务的部署

7、 先启动Tomcat服务,然后右键项目,选择Flex Project Nature子菜单,增加Flex特性。

25 增加Flex特性第一步

Server选择J2EE,点击Next

26 增加Flex特性第二步

修正Root folderRoot URLContext root属性,与项目名一直即可,然后点击Validate Configuration,会提示是否合法。接着修正Output folder,自定,这里定义为Client,点击finish即可。

 

27 增加Flex特性第三步

这时候检查Problem监视框,是否有Error级别的提示:

28 error提示

如果出现Cannot create HTML wrapper. Right-click here to recreate folder html-template.这样的错误,右键点击错误,选择Recreate HTML Template即可。

29 消除错误

这时右键项目,Run as – Flex Application,如果出现空白屏,说明Flex配置成功。

8,关闭Tomcat服务,编写登录范例。

第一步:数据库创建user表,包含idusernamepassword等字段。

第二步:在MyEclipse Database Exploring中打开数据库连接,在user表上右键,选择

Hibernate Reverse Engineering

30 利用工具自动生成映射文件

这里使用传统的方式进行配置,具体见图31.

31 Hibernate生成映射文件

点击NextId Generator 选择 increment

32 选择Id生成方式

    点击Next,设定Class Name,将Id Generator设为increment,点击finish

33 生成数据库映射文件最后一步

 

如果发现User.java以及User.hbm.xml文件不在你想要放置的包下,可以将这两个文件移入想要放置的包内,如com.coarrow.model,然后修改User.hbm.xml文件中的:

 

 

<hibernate-mapping package="com.coarrow.model">

 

 

并修改applicationContext.xml文件中:

 

<property name="mappingResources">
      <list>
           <value>./com/coarrow/model/User.hbm.xml</value>
      </list>
</property>

 

 同时将UserDAO.java放置在com.coarrow.dao包下,修改applicationContext.xml文件中的对应位置为:

 

<bean id="UserDAO" class="com.coarrow.dao.UserDAO">
       <property name="sessionFactory">
           <ref bean="sessionFactory"/>
       </property>
</bean>

第三步:编写登录验证程序

 

新建com.coarrow.service包,在包下新建类LoginProxy,代码如下:

 

package com.coarrow.service;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import com.coarrow.dao.UserDAO;

public class LoginProxy {
    public String Login(String name, String pass) {
       //连接数据库检索用户名和密码是否正确,如果正确返回“success”,否则返回错误信息
       BeanFactory bf=new XmlBeanFactory(new FileSystemResource("D:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/FlexProject/applicationContext.xml"));
       UserDAO us = (UserDAO) bf.getBean("UserDAO");
       if (us.findByUsername(name).size() != 0)
           return "success";
       else
           return "faild";
    }
}

 

 新增com.coarrow.factory包,在包下新建类SpringFactory,代码如下:

 

package com.coarrow.factory;
 
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 
import flex.messaging.FactoryInstance;
import flex.messaging.FlexFactory;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.ServiceException;
 
public class SpringFactory implements FlexFactory {
    private static final String SOURCE = "source";
 
    public void initialize(String id, ConfigMap configMap) {
    }
 
    public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {
       SpringFactoryInstance instance = new SpringFactoryInstance(this, id,
              properties);
       instance.setSource(properties.getPropertyAsString(SOURCE, instance
              .getId()));
       return instance;
    }
 
    public Object lookup(FactoryInstance inst) {
       SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;
       return factoryInstance.lookup();
    }
 
    static class SpringFactoryInstance extends FactoryInstance {
       SpringFactoryInstance(SpringFactory factory, String id,
              ConfigMap properties) {
           super(factory, id, properties);
       }
 
       public String toString() {
           return "SpringFactory instance for id=" + getId() + " source="
                  + getSource() + " scope=" + getScope();
       }
 
       public Object lookup() {
           ApplicationContext appContext = WebApplicationContextUtils
                  .getWebApplicationContext(flex.messaging.FlexContext
                         .getServletConfig().getServletContext());
           String beanName = getSource();
 
           try {
              return appContext.getBean(beanName);
           } catch (NoSuchBeanDefinitionException nexc) {
              ServiceException e = new ServiceException();
              String msg = "Spring service named '" + beanName
                     + "' does not exist.";
              e.setMessage(msg);
              e.setRootCause(nexc);
              e.setDetails(msg);
              e.setCode("Server.Processing");
              throw e;
           } catch (BeansException bexc) {
              ServiceException e = new ServiceException();
              String msg = "Unable to create Spring service named '"
                     + beanName + "' ";
              e.setMessage(msg);
              e.setRootCause(bexc);
              e.setDetails(msg);
              e.setCode("Server.Processing");
              throw e;
           }
       }
    }
}

 

第四步:配置SpringFlex的集成。

A配置WEB-INF/flex/service-config.xml ,添加如下代码:

 

<factories>
       <factory id="springFactory" class="com.coarrow.factory.SpringFactory"/>
</factories>

 

B配置WEB-INF/flex/remote-config.xml,添加如下代码:

 

<destination id="loginService">  
        <properties>  
            <factory>springFactory</factory>  
            <source>loginProxy</source>
        </properties>  
</destination>

 

C配置WEB-INF/applicationContext.xml,添加如下代码:

 

<bean id="loginProxy" class="com.coarrow.service.LoginProxy"/>

 

 

D、配置WEB-INF/web.xml文件,在description属性后添加如下代码:

 

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/applicationContext.xml</param-value>
</context-param>
<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>

 

E、编写MXML文件,验证登陆程序:(RemoteObject 中的 destination="loginService" 这是原文的一处错误

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
              layout="absolute">
    <mx:RemoteObject id="loginDao" destination="loginService"/>
    <mx:Script>
       <![CDATA[
           import mx.rpc.events.FaultEvent;
           import mx.rpc.events.ResultEvent;
           import mx.controls.Alert;
 
           private function callRO(str:String, psw:String):void
           {
              if (str.length == 0 || str == "")
              {
                  errormes.text="用户名不能为空";
              }
              else if (psw.length == 0 || psw == "")
              {
                  errormes.text="密码不能为空";
              }
              else
              {
                  loginDao.Login(str, psw);
                  loginDao.addEventListener(ResultEvent.RESULT, resultHandler);
                  loginDao.addEventListener(FaultEvent.FAULT, faultHandler);
              }
           }
 
           private function resultHandler(event:ResultEvent):void
           {
              if (event.message.body.toString() == "success")
                  Alert.show("登陆成功", "成功");
              else
                  Alert.show("登陆失败", "失败");
           }
 
           private function faultHandler(event:FaultEvent):void
           {
              Alert.show(event.fault.toString(), "失败");
           }
 
           private function reset():void
           {
              username.text="";
              psw.text="";
           }
       ]]>
    </mx:Script>
    <mx:Panel title="登录"
             height="50%"
             width="80%"
             paddingTop="10"
             paddingLeft="10"
             paddingRight="10"
             paddingBottom="10"
             id="mainPanel">
       <mx:Label x="34"
                y="33"
                text="用户名:"/>
       <mx:TextInput x="77"
                    y="31"
                    id="username"/>
       <mx:Label x="34"
                y="61"
                text="密  码:"/>
       <mx:TextInput x="77"
                    y="59"
                    displayAsPassword="true"
                    id="psw"/>
       <mx:Button x="77"
                 y="90"
                 label="登录"
                 click="callRO(username.text,psw.text);"/>
       <mx:Button x="90"
                 y="90"
                 label="重置"
                 click="reset()"/>
       <mx:Label x="163"
                y="94"
                id="errormes"
                color="red"/>
    </mx:Panel>
</mx:Application>

F、检查输出目录的WEB-INF/lib目录下是否有两个asmjar包,删除asm-2.2.3.jar,启动Tomcat

在地址栏里输入:http://localhost:8080/FlexProject/Client/FlexProject.html

 

 

 

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值