`

【推荐】Flex+Struts2+Spring整合开发实例

    博客分类:
  • flex
阅读更多

关于Flex的整合问题,做一个配置简介,另外对容易出错的地方跟大家说说 
如果有错误,感谢大家指正。 
(开始之前,我必须承认,题目是个噱头,只要有Spring这个超强粘合剂,多个框架可以很容易整合。) 
如果是熟悉Spring MVC则完全不需要使用Struts2,这里为了先前项目的表现层可以平滑过度到Flex,才沿用了Struts2 
另外,这里主要讲讲Flex怎么与Spring整合,至于Spring与其他框架整合,不在文章内 
1.假定你已经配置好web应用并且增加了BlazeDS和导入spring-flex包(使用到的包会在文章最后展示) 
配置web.xml 

Xml代码 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns="http://java.sun.com/xml/ns/javaee"  
  4.     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
  6.     id="WebApp_ID" version="2.5">  
  7.   
  8.     <display-name>flexweb</display-name>  
  9.     <context-param>  
  10.         <param-name>contextConfigLocation</param-name>  
  11.         <param-value>classpath:applicationContext.xml</param-value>  
  12.     </context-param>  
  13.   
  14.     <!-- The filter for struts2 -->  
  15.     <filter>  
  16.         <filter-name>struts2</filter-name>  
  17.         <filter-class>  
  18.             org.apache.struts2.dispatcher.FilterDispatcher  
  19.         </filter-class>  
  20.     </filter>  
  21.   
  22.     <listener>  
  23.         <listener-class>  
  24.             org.springframework.web.context.ContextLoaderListener  
  25.         </listener-class>  
  26.     </listener>  
  27.     <!-- Http Flex Session attribute and binding listener support -->  
  28.     <!--  
  29.         <listener>  
  30.         <listener-class>flex.messaging.HttpFlexSession</listener-class>  
  31.         </listener>  
  32.     -->  
  33.   
  34.     <!-- MessageBroker Servlet 单独为Flex配置xml-->  
  35.     <servlet>  
  36.         <servlet-name>flex</servlet-name>  
  37.         <servlet-class>  
  38.             org.springframework.web.servlet.DispatcherServlet  
  39.         </servlet-class>  
  40.         <init-param>  
  41.             <param-name>contextConfigLocation</param-name>  
  42.             <param-value>  
  43.                 /WEB-INF/classes/flex-application-config.xml  
  44.             </param-value>  
  45.         </init-param>  
  46.         <load-on-startup>1</load-on-startup>  
  47.     </servlet>  
  48.   
  49.     <!-- The filter mapping for struts2 -->  
  50.     <filter-mapping>  
  51.         <filter-name>struts2</filter-name>  
  52.         <url-pattern>/*</url-pattern>  
  53.     </filter-mapping>  
  54.   
  55.     <!-- 
  56.     Map all /messagbroker requests to the DispatcherServlet for handling 
  57.     -->  
  58.     <servlet-mapping>  
  59.         <servlet-name>flex</servlet-name>  
  60.         <url-pattern>/messagebroker/*</url-pattern>  
  61.     </servlet-mapping>  
  62.   
  63.     <welcome-file-list>  
  64.         <welcome-file>index.html</welcome-file>  
  65.         <welcome-file>index.jsp</welcome-file>  
  66.     </welcome-file-list>  
  67. </web-app>  


以上内容实质上是两个Web Framework,一个是Struts2(标记名为struts2),一个是Spring MVC(标记名为flex) 
这里Spring MVC为flex的RemotingObject提供映射和Flex与Server通讯MessageBroker类 

配置flex-application-config.xml

Xml代码 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:flex="http://www.springframework.org/schema/flex"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="   
  6. http://www.springframework.org/schema/beans   
  7. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  8. http://www.springframework.org/schema/flex   
  9. http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">  
  10.   
  11.     <flex:message-broker/>   
  12.       


大家注意到,标签引入http://www.springframework.org/schema/flex/spring-flex-1.0.xsd文件,便可以使用<flex:message-broker/> 标记了。 
但是这样写虽然简便,但在初学的时候,还是最好理解它的机制吧 
以上的内容可以改写成: 

(转载请注明出处:[url=http://www.live588.org]淘金盈[/url] [url=http://www.tswa.org]博彩通[/url]  [url=http://www.nsdm.org]澳门博彩[/url]  [url=http://www.lixx.org]博彩网[/url][url=http://www.uvip.org]e世博[/url][url=http://www.10086money.com]时尚资讯[/url][url=http://262002954-qq-com.iteye.com]flex[/url][url=http://flexflex.iteye.com]flex[/url])

Xml代码 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:flex="http://www.springframework.org/schema/flex"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="   
  6. http://www.springframework.org/schema/beans   
  7. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
  8. <bean id="_messageBroker"  
  9.         class="org.springframework.flex.core.MessageBrokerFactoryBean">  
  10.         <property name="servicesConfigPath">  
  11.             <value>/WEB-INF/flex/services-config.xml</value>  
  12.         </property>  
  13.     </bean>  
  14.     <!-- Maps request paths at /* to the BlazeDS MessageBroker -->  
  15.     <bean  
  16.         class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  17.         <property name="mappings">  
  18.             <value>/*=_messageBroker</value>  
  19.         </property>  
  20.     </bean>  
  21.   
  22.     <!-- Dispatches requests mapped to a MessageBroker -->  
  23.     <bean  
  24.         class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter" />  


大家注意: 
“http://www.springframework.org/schema/flex 
  http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">内容被移除” 
完全是一个标准的Spring配置文件了。 
  这里把之前web.xml的/messagebroker/*映射完全对应到/*=_messageBroker,也就是 
org.springframework.flex.core.MessageBrokerFactoryBean类中,生成MessageBroker,而MessageBroker是Flex与Server通信的关键 
而MessageBrokerHandlerAdapter适配器会取得MessageBroker的实例,使用endpoint = broker.getEndpoint(endpointPath, contextPath);取得端点 
endpoint.service(request, response);发送 
如果你熟悉Spring MVC,请原谅我又唠叨一遍- -# 
现在通讯问题完毕,那么远程调用呢? 
我们接着来: 
定义一个java类:

Java代码 
  1. package example.fx;  
  2.   
  3. public class DataBean {  
  4.   
  5.     private String name = "";  
  6.     private String params = "";  
  7.     public String getName() {  
  8.         return this.getClass().getName()+ " : " +name;  
  9.     }  
  10.     public void setName(String name) {  
  11.         this.name = name;  
  12.     }  
  13.     public String getParams() {  
  14.         return params;  
  15.     }  
  16.     public void setParams(String params) {  
  17.         this.params = params;  
  18.     }  
  19. }  


在flex-application-config.xml中,增加: 
当然,你也可以写到Spring的其他配置文件中,例如本文中Spring管理Struts2的那个applicationContext.xml(参照web.xml)

Xml代码 
  1. <bean id="dataBean" class="example.fx.DataBean">  
  2.     <property name="params">  
  3.         <value>Hello Flex!!!</value>  
  4.     </property>  
  5. </bean>  


这里只生成了一dataBean的实例,但是前段Flex如何访问呢? 
在在flex-application-config.xml中继续增加

Xml代码 
  1. <flex:remoting-destination ref="dataBean" />  


这里又是图开发速度,然而这部分可以有如下三种写法,分别是: 
a.

Xml代码 
  1. <bean id="dataBean" class="example.fx.DataBean">  
  2.            <property name="params">  
  3.                <value>Hello Flex!!!</value>  
  4.     </property>  
  5.     <flex:remoting-destination />  
  6. </bean>  


b.

Xml代码 
  1. <flex:remoting-destination ref="dataBean"  
  2.         include-methods="read, update" exclude-methods="create, delete"  
  3.         channels="my-amf, my-secure-amf" />  


c.

Xml代码 
  1. <bean id="product"  
  2.     class="org.springframework.flex.remoting.RemotingDestinationExporter">  
  3.     <property name="messageBroker" ref="_messageBroker" />  
  4.     <property name="service" ref="dataBean" />  
  5.     <property name="destinationId" value="dataBean" />  
  6.     <property name="includeMethods" value="read, update" />  
  7.     <property name="excludeMethods" value="create, delete" />  
  8.     <property name="channels" value="my-amf, my-secure-amf" />  
  9. </bean>  


当然,dataBean中并没有read, update, create, delete方法,这里只是演示用
经过这么多繁琐的过程,终于Flex可以访问到Server的java类了。 
我们新建一个MXML Application文件

Xml代码 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">  
  3.     <mx:Script>  
  4.         <![CDATA[ 
  5.             import mx.rpc.events.FaultEvent; 
  6.             import mx.rpc.events.ResultEvent; 
  7.             private function onResultHandler(event:ResultEvent):void{ 
  8.                 Alert.show(String(event.result), String(example.data)); 
  9.             } 
  10.             private function onFaultHandler(event:FaultEvent):void{ 
  11.                 Alert.show(String(event.fault), "Fault!"); 
  12.             } 
  13.             private function btn_Click1EventHandler(event:MouseEvent):void{ 
  14.                 dbRemote.getName(); 
  15.             } 
  16.             private function btn_Click1EventHandler(event:MouseEvent):void{ 
  17.                 dbRemote.getParams(); 
  18.             } 
  19.  
  20.         ]]>  
  21.     </mx:Script>  
  22.     <mx:RemoteObject id="dbRemote" destination="dataBean" endpoint="http://localhost:8080/flexweb/messagebroker/amf" result="onResultHandler(event)" fault="onFaultHandler(event)">  
  23.     </mx:RemoteObject>  
  24.     <mx:Button x="10" id="btn_Click1" label="RemoteClass->getName" click="btn_Click1EventHandler(event)"/>  
  25.     <mx:Button x="80" id="btn_Click2" label="RemoteClass->getParams" click="btn_Click2EventHandler(event)"/>  
  26. </mx:Application>  


  服务器启动后,运行你的MXML Application,点击Flash上的两个按钮,看看结果吧 
如果你跟我一样懒 
那么配置一下Struts,在URL敲一下地址,不用每次都运行你的MXML文件,特别是为了安全起见,你把MXML文件编译到web/WEB-INF/下的时候 
以下是struts.xml

Xml代码 
  1. <!DOCTYPE struts PUBLIC  
  2.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  3.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  4. <struts>  
  5.     <package name="default" namespace="" extends="struts-default">  
  6.         <action name="*" class="com.opensymphony.xwork2.ActionSupport">  
  7.             <result name="success">/WEB-INF/page/flex/{1}.swf</result>  
  8.             </action>  
  9.     </package>  
  10. </struts>  



有几点说明: 
1.flex的四个配置文件完全没有更改,并且使用默认channel. 
2.有文章说,在remoting-service配置远程访问 
比如:

Xml代码 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <service id="remoting-service"  
  3.     class="flex.messaging.services.RemotingService">  
  4.   
  5.     <adapters>  
  6.         <adapter-definition id="java-object"  
  7.             class="flex.messaging.services.remoting.adapters.JavaAdapter"  
  8.             default="true" />  
  9.     </adapters>  
  10.   
  11.     <default-channels>  
  12.         <channel ref="my-amf" />  
  13.     </default-channels>  
  14.         <!-- 远程调用 -->  
  15.     <destination id="dataBean">  
  16.         <properties>  
  17.             <source>example.fx.DataBean</source>  
  18.         </properties>  
  19.     </destination>  
  20. </service>  


这种方式和在文章中的flex-application-config.xml配置的 
<flex:remoting-destination ref="dataBean" />  是一致的,也就是说,如果你在remoting-service配置了,就不需要在Spring配置文件中,反之亦然,如果你在remoting-service和flex-application-config.xml都配置了,web服务器启动的时候会抛异常,提示你bean id已经注册. 
3.有不少文章中,MXML中RomoteObject是这样配置的

Xml代码 
  1. <mx:AMFChannel id="myamf" uri="http://localhost:8080/flexweb/messagebroker/amf"/>      
  2. <mx:ChannelSet id="channelSet" channels="{[myamf]}"/>      
  3. <mx:RemoteObject id="dBean"     
  4.    destination="dataBean" channelSet="{channelSet}" result="onResultHandler(event)" fault="onFaultHandler(event)"/>  


如果使用默认配置,即remoting-service.xml文件中会有一个默认channel配置,这样写是完全没有必要的,你只需要在

Xml代码 
  1. <mx:RemoteObject id="dbRemote" destination="dataBean" endpoint="http://localhost:8080/flexweb/messagebroker/amf"/>   

 

定义一个server的端点 
上面的写法这相当于你另外写了一个AMFChannel,并且使用管道去接(ChannelSet里可以放很多channel) 

jar包: 
Spring 使用Spring 3.0.0.M2 
Struts 使用Struts 2.0.4 
Flex 使用默认BlazeDS包和org.springframework.flex-1.0.0.RC2.jar包 
稍后设置一下下载地址 
---------------------------------------------------------------- 
BlazeDS: 
http://opensource.adobe.com/wiki/display/blazeds/Release+Builds 
org.springframework.flex-1.0.0.RC2.jar: 

http://dl.iteye.com/topics/download/6ba351cc-035b-39a4-b304-cca3e3bc6c50

2
2
分享到:
评论

相关推荐

    flex与+struts2+hibernate+spring集成实例项目

    flex与+struts2+hibernate+spring集成实例项目,源码奉献,物有所值

    lib1 flex+struts2+spring+ibatis jar 完整的jar 需要下载本人资源lib2

    标题和描述中提到的"lib1 flex+struts2+spring+ibatis jar 完整的jar 需要下载本人资源lib2"是一个关于Java Web开发中的关键库集合,这些库是构建基于Flex前端、Struts2作为MVC框架、Spring作为依赖注入和整体应用...

    flex4+spring3+struts2+hibernate3+blazeds整合实例

    在IT行业中,构建高效、可扩展的企业级应用是至关重要的,而"flex4+spring3+struts2+hibernate3+blazeds整合实例"是一个典型的Java Web开发架构,它结合了前端的Flex技术和后端的SSH(Spring、Struts2、Hibernate)...

    Flex+Struts2+JSON实现Flex和后台的HTTP Service请求

    在Flex项目中,创建一个HTTPService实例,指定URL以指向Struts2的Action。设置方法为POST或GET,根据实际需求选择。 2. **创建Struts2 Action**: 在Struts2的后台,创建一个Action类,该类将处理来自Flex的请求...

    flex与 struts2与 hibernate与spring集成实例项目

    本项目“flex与struts2与hibernate与spring集成实例项目”就是一个典型的案例,它整合了四个关键的技术:Flex前端展示、Struts2作为MVC框架、Hibernate作为持久层框架以及Spring作为依赖注入和整体应用管理框架。...

    WEB项目-集成Flex3+BlazeDS3.2+Spring2.5.6+iBatis2.3.4+Struts2.1.8

    1. **Struts2与Spring的整合**:本项目中,Struts2的动作类(Action)被托管于Spring容器,这意味着Action类作为Spring的bean管理,可以利用Spring的依赖注入来获取其他服务。这样做的好处是可以更好地控制对象生命...

    UserInfoSys.rar_flex_flex strut_flex struts _flex struts2 list_s

    本系统“UserInfoSys”便是一个典型的实例,它利用Adobe Flex作为前端展示层,与Apache Struts2作为后端控制层进行深度整合,实现了高效、用户友好的信息管理系统。下面我们将详细探讨Flex与Struts2的结合以及它们在...

    用MyEclipse搭建flex+j2ee开发环境

    如果你的项目中还需要使用SSH(Spring、Struts和Hibernate)框架,那么在`WebContent/WEB-INF`目录下添加对应的配置文件(如`struts-config.xml`, `spring-servlet.xml`等),并把SSH所需的JAR库添加到`WebContent/...

    flex 4 学习资料

    分享:Flex4+Struts2+Spring3+Blazeds 百度空间_应用平台 Flex中嵌入Google地图 - 菩提树 - ITeye技术网站 分享:Flex builder3执行Debug需要安装的Flash Player Debugger环境 百度空间_应用平台 flex4 的DataGrid...

    Flex4 MVC系统框架开发的企业级应用管理系统

    @framework Spring2.5框架 + Struts2 + IBatis2 +Flex4.6 +JSP @remark J2EE企业级系统架构开发平台 @author TanLiang @version Ver 1.3 以下为此系统框开发的实例产品,此产品为真实物业公司应用管理系统。 此...

    java+flex3开发实例及相关资源

    里面含有 blazeds.war包 以及相关教程,和一个 flex3跟struts2.16+hibernate3.25+spring2.5组合的实例和相应数据库,不过里面没有jar包,如有需要,可以向我要 QQ 826785300

    Flex的SSH整合实例

    在本实例中,我们将探讨如何将Flex前端与SSH后端进行有效整合,以实现高效的数据交互和功能丰富的Web应用。 首先,让我们深入理解Flex的核心概念。Flex使用MXML和ActionScript来创建用户界面,MXML是一种声明式语言...

    Flex3环境配置以及Flex3和java整合开发步骤

    1. 创建Java后端服务:使用Java开发Web服务,例如使用Spring MVC或Struts2框架创建RESTful API。 2. 配置Flex与Java通信:Flex应用可以通过HTTPService或WebService组件与Java后端进行数据交换。需要在Flex项目中...

    FlexAPI在企业计算环境中的应用

    2. **松散耦合集成**:Flex+Blazeds架构可以轻松地与现有的系统进行集成,不论后者使用的是哪种框架,如Struts或Spring等,都能够实现平滑过渡。 3. **现有系统的升级价值**:即使已经存在使用其他技术栈构建的应用...

    flex java实例

    通常,Java Web应用会使用Spring MVC或Struts等框架来组织和管理控制器、模型和服务。Java后端负责与数据库交互,执行CRUD操作,然后通过HTTP服务(如SOAP或RESTful)与Flex客户端通信。 3. BlazeDS或LiveCycle ...

    flex4与java结合实例

    Flex4和Java结合是开发富互联网应用程序(RIA)时常用的一种技术组合。Flex4是Adobe AIR框架的一部分,用于创建交互式、图形丰富的用户界面,而Java则提供了强大的后端服务处理能力。本实例将深入探讨如何将这两种...

    MyEclipse_8_5_flex4+Blazeds配置例子和blazeds下载

    首先,MyEclipse是基于Eclipse的Java EE集成开发环境,特别适合开发Web应用程序,包括Java、JSP、Servlet、Struts、Spring等。在8.5版本中,它已经支持了Flex项目开发,使得能够无缝地将ActionScript和Flex应用与...

    11种项目开发实例

    8. **论坛系统(Struts 2+Hibernate+Spring实现)**:这是一个基于MVC(Model-View-Controller)架构的Web应用,使用了Struts 2作为控制器,Hibernate进行对象关系映射,Spring提供依赖注入和事务管理。这种组合能...

    flex 后台管理系统

    SSH在这里并非指Secure Shell协议,而是Spring、Hibernate和Struts这三种开源Java框架的组合,它们共同构成了SSH框架,是开发Java Web应用程序的常用工具。 1. Spring框架:Spring是一个全面的Java应用程序框架,...

Global site tag (gtag.js) - Google Analytics