-
Flex4 + struts2 + spring3整合后,Flex4通过httpService与struts2的action通信失败10
我整合了flex4 struts2 spring3后,通过httpservice与action进行通信失败。请问什么原因??
具体配置如下:
web.xml
<!-- *************************************** context param ************************************ -->
<!-- context param -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/conf/applicationContext.xml
/WEB-INF/conf/applicationContext-struts.xml
<!-- /WEB-INF/conf/application-flex-config.xml -->
</param-value>
</context-param>
<!-- *************************************** context param ************************************ -->
<!-- ***************************************** listener begin *************************************** -->
<!-- Http Flex Session attribute and binding listener support -->
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>
<!-- spring context listener -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- ***************************************** listener end *************************************** -->
<!-- ***************************************** filter begin *************************************** -->
<!-- struts2 filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<!-- struts2 filter mapping -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ***************************************** filter end *************************************** -->
<!-- ***************************************** servlet begin *************************************** -->
<!-- MessageBroker Servlet -->
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/conf/application-flex-config.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- ***************************************** servlet end *************************************** -->
<!-- ***************************************** servlet mapping begin *************************************** -->
<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
<!-- ***************************************** servlet mapping end *************************************** -->
------------------------------------------- spring -------------------------------------------------
1.application-flex-config.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:flex="http://www.springframework.org/schema/flex"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
<bean id="messageBroker"
class="org.springframework.flex.core.MessageBrokerFactoryBean">
<property name="servicesConfigPath">
<value>/WEB-INF/flex/services-config.xml</value>
</property>
</bean>
<!-- Maps request paths at /* to the BlazeDS MessageBroker -->
<bean
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>/*=messageBroker</value>
</property>
</bean>
<!-- Dispatches requests mapped to a MessageBroker -->
<bean class="org.springframework.flex.servlet.MessageBrokerHandlerAdapter" />
</beans>
2. applicationContext-struts.xml
<beans>
<bean id="loginAction" class="com.hotelManager.login.LoginAction" scope="prototype" />
</beans>
------------------------------------ struts.xml--------------------------------------------
struts.xml
<struts>
<!-- struts2 action配置文件 -->
<include file="struts-manager.xml" />
<!-- 当修改struts.xml时,重新加载 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 资源文件 -->
<constant name="struts.custom.i18n.resources" value="messageResource" />
<!-- 国际化字符集 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- struts2默认视图主题 -->
<constant name="struts.ui.theme" value="simple" />
<!-- 上传文件大小上限 -->
<constant name="struts.multipart.maxSize" value="1000000000" />
<!-- action的后缀 -->
<constant name="struts.action.extension" value="htm,action" />
<!-- Spring负责创建Action实例 -->
<constant name="struts.objectFactory" value="spring" />
<!-- 全局的日志记录 与 错误跳传页面 -->
<package name="hotelManager" extends="struts-default" abstract="true" namespace="/">
<!--
<global-results>
<result name="NullPointerException"></result>
<result name="exception"></result>
<result name="error"></result>
<result name="input"></result>
</global-results>
<global-exception-mappings>
<exception-mapping result="exception" exception="java.lang.Exception"/>
<exception-mapping result="NullPointerException" exception="java.lang.NullPointerException"/>
</global-exception-mappings> -->
</package>
struts-manager.xml
<struts>
<package name="login" extends="hotelManager">
<action name="loginAction" class="com.hotelManager.login.LoginAction" method="login" />
</package>
</struts>
hotelManager.mxml
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.Request;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
protected function loginButton_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
var service:HTTPService = new HTTPService();
service.resultFormat = "text";
service.method = "POST";
service.url = "loginAction.htm";
service.addEventListener(ResultEvent.RESULT, service_resultHandler);
var param:URLVariables = new URLVariables();
param.userCode = userCode.text;
param.password = password.text;
Alert.show("url:"+service.url);
service.send(param);
}
protected function service_resultHandler(event:ResultEvent):void{
var result:String = event.result.toString();
Alert.show("result:"+result);
if(result.match("success")){
Alert.show("登陆成功!!s");
}else{
Alert.show("登陆失败,用户名或密码错误!!");
return;
}
}
]]>
</fx:Script>
<mx:ViewStack x="0" y="0" id="indexStack" width="100%" height="100%">
<s:NavigatorContent label="welcome" width="100%" height="100%">
<s:Label id="userLabel" x="546" y="206" text="用户ID:" width="50" height="25" verticalAlign="middle" fontFamily="细明体" fontSize="15"/>
<s:Label id="passwordLabel" x="546" y="256" text="密码:" width="50" height="25" fontFamily="细明体" fontSize="15" verticalAlign="middle"/>
<s:TextInput id="userCode" x="615" y="206" width="206"/>
<s:TextInput id="password" x="615" y="256" displayAsPassword="true" width="206"/>
<s:Button id="loginButton" x="615" y="301" label="登陆" width="70" height="26" click="loginButton_clickHandler(event)"/>
</s:NavigatorContent>
</mx:ViewStack>
2010年8月27日 10:30
目前还没有答案
相关推荐
标题 "Flex+Struts2+JSON实现Flex和后台的HTTP Service请求" 描述了一种在Web应用开发中,前端Flex与后端Struts2通过JSON进行数据交互的技术方案。这种技术能够实现前后端的高效通信,提高用户体验,因为它允许动态...
这个文档可能会讲解如何将Flex 4与Struts2、Spring3和BlazeDS结合使用。Struts2是MVC框架,Spring3提供依赖注入和服务管理,BlazeDS是Flex与Java服务器通信的中间件。这样的组合可以构建出强大的企业级应用,其中...
在本文中,我们将探讨如何将Adobe Flex与Java JSP相结合,利用HTTPService进行XML通信。这个过程涉及多个步骤,包括项目设置、库的添加以及配置文件的调整。 首先,我们需要创建一个新的Web项目,选择J2EE 1.4标准...
5. **编写ActionScript代码**:在Flex项目中创建ActionScript类,通过RemoteObject或HTTPService组件与服务器端进行通信。 6. **部署与调试**:将项目部署到BlazeDS服务器上,利用MyEclipse的调试功能进行测试和优化...
3. **Flex与Struts2的整合**:Struts2的Action可以通过Blazeds暴露给Flex,Flex客户端通过Flex的HTTPService组件发送请求到Struts2的Action,Action执行后返回结果,再由Blazeds转发给Flex客户端。 4. **Flex与...
2. 配置Flex与Java通信:Flex应用可以通过HTTPService或WebService组件与Java后端进行数据交换。需要在Flex项目中配置相应的服务引用。 3. 发送和接收数据:在Flex中调用Java服务的方法,发送请求并接收响应数据,...
总的来说,Flex4与Java的结合使得开发者可以充分利用两者的优点,创建出既美观又功能强大的Web应用。对于初学者,理解这两个平台的交互机制,熟练掌握AMF通信或RESTful服务的使用,将是迈进RIA开发领域的重要一步。...
在整合Java项目时,我们需要配置相应的库和框架,例如Spring-Flex支持AMF通信,Struts2支持HttpService,而CXF用于配置WebService。以下是一些关键步骤: 1. 配置SH(Spring + Hibernate):首先,确保项目的基础架构...
在Flex应用中,Struts可以作为与Flex通信的中间层,通过Struts的Action和ActionForward来处理请求和响应。 3. Hibernate:Hibernate是一个流行的Java ORM框架,自动管理Java对象和数据库表之间的映射,减少了对SQL...
这种结合通常通过AMF(Action Message Format)协议实现,它允许Flex客户端高效地与服务器通信,传递复杂的数据结构。 1. **AMF通信**:AMF是一种二进制格式,用于在Flex客户端和服务器之间传输数据。它比HTTP/JSON...
2. **Struts框架**:尽管Struts2没有直接支持Flex,但可以通过使用第三方库,如FlexMXMLServlet或BlazeDS,将Struts2的Action暴露给Flex。这些库允许将Struts2的结果转换为AMF响应,使得Flex客户端可以直接调用...
5. **Struts2整合**:如果项目中使用了Struts2,可以创建一个Action,该Action调用服务层的方法获取图片数据,并在返回结果中包含这个数据。Struts2的`StreamingResult`或者自定义ResultType可以帮助我们正确地将二...
为了成功地将Flex与JSP整合,开发者需要掌握JSP、Servlet、Flex编程、AMF通信以及可能涉及的任何特定服务器端框架(如Spring、Struts等)的基础知识。通过有效的学习和实践,开发者可以创建出既有美观界面又有强大...
3. **通信协议**:Flex与Java交互主要通过HTTP或HTTPS协议,利用AMF(Action Message Format)进行数据序列化,实现高效的二进制数据传输。AMF减少了网络传输的数据量,提高了性能。 4. ** BlazeDS与LiveCycle Data...
2. BlazeDS/Lightweight-Remoting:Adobe提供的BlazeDS是一个免费的数据和消息中间件,支持AMF(Action Message Format),能实现高性能的Flex与Java通信。 3. Java Servlets和JSP:Servlets作为服务器端的Java组件...
在Flex应用中,我们可以使用AMF(Action Message Format)或者HTTPService来与SSH后端进行数据交换。AMF提供高效的二进制数据传输,能显著提升前后端通信的性能。而Spring Flex则提供了一整套集成方案,简化了Flex与...