`
xmy20051643
  • 浏览: 39976 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

flex和java通过remoteObject方式通讯笔记

 
阅读更多

环境:

flashbuilder

eclipse ee

flex sdk4

flex环境整合在另一篇文章里,进入正题

/********************************************************************/

1.建立工程:

新建flex项目,内容填写如下:

注意修改输出文件夹

接下来的设置需要修改的地方是输出文件夹url和主应用程序文件如图:

点击完成,这个时候会建立一个flex项目,项目结构如图:

好了,现在可以部署到服务器,但你会发觉有错误,web context路径错误,在项目上右键->属性->web project settings

,修改Context root如图:

至此告一个段落.

 

修改web.xml文件,加入如下内容(如果没有,有的话更好)

 

 <!-- begin rds -->
   <servlet>
       <servlet-name>RDSDispatchServlet</servlet-name>
        <display-name>RDSDispatchServlet</display-name>
       <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
        <init-param>
            <param-name>useAppserverSecurity</param-name>
            <param-value>false</param-value>
        </init-param>        
       <load-on-startup>10</load-on-startup>
   </servlet>
   <servlet-mapping id="RDS_DISPATCH_MAPPING">
       <servlet-name>RDSDispatchServlet</servlet-name>
       <url-pattern>/CFIDE/main/ide.cfm</url-pattern>
   </servlet-mapping>
	<!--end rds -->
 

 

此时完整的web.xml应该如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>myflexweb</display-name>

	<context-param>
		<param-name>flex.class.path</param-name>
		<param-value>/WEB-INF/flex/hotfixes,/WEB-INF/flex/jars</param-value>
	</context-param>

	<!-- Http Flex Session attribute and binding listener support -->
	<listener>
		<listener-class>flex.messaging.HttpFlexSession</listener-class>
	</listener>

	<!-- MessageBroker Servlet -->
	<servlet>
		<servlet-name>MessageBrokerServlet</servlet-name>
		<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
		<init-param>
			<param-name>services.configuration.file</param-name>
			<param-value>/WEB-INF/flex/services-config.xml</param-value>
		</init-param>
		<init-param>
			<param-name>flex.write.path</param-name>
			<param-value>/WEB-INF/flex</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>MessageBrokerServlet</servlet-name>
		<url-pattern>/messagebroker/*</url-pattern>
	</servlet-mapping>
	
	 <!-- begin rds -->
   	<servlet>
       <servlet-name>RDSDispatchServlet</servlet-name>
        <display-name>RDSDispatchServlet</display-name>
       <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>
        <init-param>
            <param-name>useAppserverSecurity</param-name>
            <param-value>false</param-value>
        </init-param>        
       <load-on-startup>10</load-on-startup>
  	 </servlet>
  	 <servlet-mapping id="RDS_DISPATCH_MAPPING">
       <servlet-name>RDSDispatchServlet</servlet-name>
       <url-pattern>/CFIDE/main/ide.cfm</url-pattern>
   	</servlet-mapping>
	<!--end rds -->
	
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>

	<!-- for WebSphere deployment, please uncomment -->
	<!--
		<resource-ref>
		<description>Flex Messaging WorkManager</description>
		<res-ref-name>wm/MessagingWorkManager</res-ref-name>
		<res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
		<res-auth>Container</res-auth>
		<res-sharing-scope>Shareable</res-sharing-scope>
	</resource-ref>
	-->
</web-app>
 

 

进入flex项目工程文件夹,找到.flexProperties文件:

找到serverContextRoot属性如图

修改为web工程的context root:

                    完毕后编写一个java文件如下:

 

package cn.com.gkhb.flex.service;

/**
 * 使用RemoteObject进行flex与java的通讯
 */
public class LoginService {
	/**
	 * 模拟已经注册用户
	 */
	private User[] registedUsers = new User[] 
	                                     {new User("john", "123"), new User("肖明杨", "123"), new User("tom", "tom"),
	                                      new User("kite", "kt"), new User("lq", "ql"), new User("tomct", "toma11")};
	
	/**
	 * 登陆
	 * @param name 用户名
	 * @param password 密码
	 * @return 登陆信息
	 */
	public String login(String name, String password) {
		String loginStatus = "";
		
		if (inputVilidate(name, password)) {
			// 查询
			for (User user : registedUsers) {
				if (user.getName().equals(name) && user.getPassword().equals(password)) {
					loginStatus = name + "登陆成功!";break;
				} else {
					loginStatus = "未注册用户!";
				}
			}
		} else {
			loginStatus = "输入不合法,请完善输入!";
		}
		return loginStatus;
	}
	
	/**
	 * 输入为空校验
	 * @param name
	 * @param password
	 * @return
	 */
	private boolean inputVilidate(String name, String password) {
		if (name == null || password == null) {
			return false;
		}
		if (name.equalsIgnoreCase("") || password.equalsIgnoreCase("")) {
			return false;
		}
		return true;
	}
	
	
	/**
	 * 数据源
	 */
	private class User {
		private String name;
		private String password;
		
		@SuppressWarnings("unused")
		public User() {
		}
		
		public User(String name, String password) {
			this.name = name;
			this.password = password;
		}
		
		public String getName() {
			return name;
		}
		@SuppressWarnings("unused")
		public void setName(String name) {
			this.name = name;
		}
		public String getPassword() {
			return password;
		}
		@SuppressWarnings("unused")
		public void setPassword(String password) {
			this.password = password;
		}
	}
}

 

 修改WebContent/WEB-INF/flex/remoting-config.xml,修改为:<?xml version="1.0" encoding="UTF-8"?>

<service id="remoting-service" class="flex.messaging.services.RemotingService">

	<adapters>
		<adapter-definition id="java-object"
			class="flex.messaging.services.remoting.adapters.JavaAdapter"
			default="true" />
	</adapters>

	<default-channels>
		<channel ref="my-amf" />
	</default-channels>

	<destination id="loginService">
		<properties>
			<source>cn.com.gkhb.flex.service.LoginService</source>
			<scope>application</scope>
		</properties>
	</destination>
</service>
 

 


 建立flex mxml文件内容如下:

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	<fx:Declarations>
		
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			/**
			 * 重设表单内容
			 */
			private function resetForm(event:MouseEvent):void
			{
				username.text = password.text = "";
			}
		]]>
	</fx:Script>
	
	<s:VGroup x="305" y="76" width="200" height="113">
		<s:HGroup width="200" height="23">
			<s:Label text="用户名"/>
			<s:TextInput id="username" text=""/>
		</s:HGroup>
		<s:HGroup width="200" height="23">
			<s:Label text="密    码"/>
			<s:TextInput id="password" displayAsPassword="true" text=""/>
		</s:HGroup>
		<s:HGroup width="200" height="22">
			<s:Button label="提交"/>
			<s:Button label="重置表单" click="resetForm(event)"/>
		</s:HGroup>
		<s:Label text="" width="201" id="loginstatus"/>
	</s:VGroup>
</s:Application>

 

 如此,将项目部署到tomcat如图:

切换到flash builder透视图,步骤如下列图:

点击链接数据/服务

然后完成.

切换到flash builder程序设计模式,点击提交,然后在右边属性栏中

点击

生成服务调用.

此时将会在mxml中添加如下方法

 

protected function button_clickHandler(event:MouseEvent):void
			{
				loginResult.token = loginService.login(/*输入以下内容的值 */ arg0, arg1);
			}

 

 修改为:

 

protected function button_clickHandler(event:MouseEvent):void
			{
				loginResult.token = loginService.login(username.text, password.text);
			}

 

 继续进入设计模式,右键点击信息输出的label,选择绑定到数据

然后如图

确定后完成

此时页面代码为;<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:services="services.*">
	<fx:Declarations>
		<s:CallResponder id="loginResult"/>
		<services:LoginService id="loginService" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
		
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			/**
			 * 重设表单内容
			 */
			private function resetForm(event:MouseEvent):void
			{
				username.text = password.text = "";
			}
			
			protected function button_clickHandler(event:MouseEvent):void
			{
				loginResult.token = loginService.login(username.text, password.text);
			}
			
		]]>
	</fx:Script>
	
	<s:VGroup x="382" y="72" width="200" height="113">
		<s:HGroup width="200" height="23">
			<s:Label text="用户名"/>
			<s:TextInput id="username" text=""/>
		</s:HGroup>
		<s:HGroup width="200" height="23">
			<s:Label text="密    码"/>
			<s:TextInput id="password" displayAsPassword="true" text=""/>
		</s:HGroup>
		<s:HGroup width="200" height="22">
			<s:Button label="提交" id="button" click="button_clickHandler(event)"/>
			<s:Button label="重置表单" click="resetForm(event)"/>
		</s:HGroup>
		<s:Label width="201" id="loginstatus" text="{loginResult.lastResult}"/>
	</s:VGroup>
</s:Application>

 finish!!!!

(注:转载须标明此文来源连接

http://xiaomy.iteye.com/blog/1151950

,否则视为侵权)

分享到:
评论

相关推荐

    flex+java+remoteObject

    Flex是Adobe开发的一种开源的富互联网应用...通过RemoteObject,开发者可以轻松地在Flex界面中调用Java服务,实现数据的交互和业务逻辑的处理。这种跨平台的解决方案为开发具有丰富用户界面的RIA应用提供了强大支持。

    flex remoteObject封装后和java通信

    在本文中,我们将深入探讨如何使用Flex中的RemoteObject组件封装后与Java应用程序进行通信。RemoteObject是Adobe Flex框架的一部分,它允许Flex客户端与服务器端的业务逻辑进行交互,通常是通过AMF(Action Message ...

    flex与java的通信 Blazeds remoteObject

    本篇将深入探讨Blazeds RemoteObject组件在Flex与Java集成中的作用、原理以及实践方法。 Blazeds全称为BlazeDS,它是一个开源项目,允许Flex客户端与Java服务器进行实时双向通信。Blazeds通过使用AMF(Action ...

    Flex与java通讯

    Flex和Java可以通过HTTP或HTTPS协议进行通信,这是最常见的方式,适用于大多数跨域场景。BlazeDS支持通过HTTP/HTTPS进行数据传输,同时也可以利用WebSocket协议提供双向通信,实现低延迟的实时数据推送。 4. **...

    flex flex和 java交互

    这种交互通常是通过AMF(Action Message Format)协议实现的,它提供了一种高效的数据序列化方式,使得Flex能够与Java服务进行低延迟的双向通信。 描述中的“入门实例”意味着我们将探讨如何创建一个基础的Flex-...

    flex+java+mysql登录

    在"flex+java+mysql登录"这个场景中,我们主要探讨的是如何使用Flex客户端与Java后台进行通信,以及通过Java处理数据库交互来实现用户登录功能。 1. Flex数据库操作:Flex中的数据访问通常通过 BlazeDS 或 LCDS ...

    FLEX和使用RemoteObject和后台通信

    `RemoteObject` 可以方便地将Flex应用程序中的ActionScript方法映射到服务器上的业务逻辑方法,从而实现数据的传递和交换。以下将详细讲解如何使用`RemoteObject`以及它的工作原理。 1. **配置Flex项目** 在Flex...

    flex 与Java通讯

    2. WebService:Flex也可以通过SOAP协议与Java的Web服务进行通讯,但这种方式相比AMF效率较低。 3. HTTPService:使用HTTP请求,通常用于向Java服务器发送RESTful API请求,获取JSON或XML格式的数据。 4. Shared...

    flex+java前后台通讯

    在Flex端,我们主要通过RemoteObject来与Java后台进行通信。以下是一些关键配置: 1. 实例化RemoteObject:`service = new RemoteObject("helloService");` 这里"helloService"是服务的标识,对应Java端的服务接口...

    flex使用 RemoteObject 与java进行json格式的数据交互

    总的来说,Flex通过`RemoteObject`组件与Java进行JSON数据交互,提供了一种高效且直观的方式,使客户端和服务器端能紧密协作,完成复杂的业务逻辑。理解并熟练掌握这种技术对于Flex和Java开发者来说至关重要。

    flex与java通过BlazeDs进行交互

    当所有配置完成后,我们可以启动Tomcat服务器,访问`http://localhost:8080/FlexJava/FlexJava-debug/FlexJava.html`来查看并测试应用程序。如果一切正常,用户在文本框中输入内容,点击按钮,应该能看到一个弹出的...

    flex与java通信

    - RemoteObject组件:提供与服务器进行AMF通信的便捷方式,可以自动映射Java对象到Flex对象。 - Event-driven架构:Flex和Java之间的通信通常是异步的,需要理解事件处理机制以处理服务器响应。 - 安全性:考虑数据...

    Flex与java交互 远程调用方式

    标题中的“Flex与Java交互 远程调用方式”指的是在Adobe Flex应用程序中与Java后端进行通信的技术。Flex是一种基于ActionScript的开源框架,用于构建富互联网应用程序(RIA),而Java是后端开发的常用语言。两者之间...

    Flex与java通讯例子

    在标题提到的“Flex与Java通讯例子”中,我们可以推测这是一个示例项目,展示了如何在Flex前端和Java后端之间传递参数。下面将详细介绍Flex与Java通信的基本原理和步骤: 1. **AMF通信**:AMF是一种二进制格式,...

    flex中RemoteObject与java的通信

    ### Flex中RemoteObject与Java的通信 在Flex开发过程中,实现客户端与服务器端的数据交互是一项基本而又关键的任务。其中,`RemoteObject`是Adobe Flex框架提供的一个强大的组件,它允许Flex应用程序通过AMF...

    Flex 和 java 整合 教程

    通过以上介绍,我们可以看到Flex与Java整合在构建企业级应用,如Simple OA自动化办公系统时,能够充分发挥各自的优势,提供优秀的用户体验和强大的后台支持。理解并掌握这种整合方式,对于提升软件开发效率和质量...

    flex中actionscript动态调用remoteobject类

    在Flex中,使用ActionScript动态调用RemoteObject类是一种常见的实现客户端与服务器端交互的方式。通过这种方式,开发者可以在客户端灵活地调用服务器端的服务,并处理返回的数据。下面将详细介绍如何在Flex中使用...

    flex4 remoteobject 多文件上传的例子

    在Flex4中,RemoteObject是ActionScript 3.0中的一种重要组件,它允许与后端服务器进行数据...通过这样的方式,开发者可以在Flex前端构建功能丰富的、用户体验良好的文件上传功能,同时保持与后端服务器的有效通信。

Global site tag (gtag.js) - Google Analytics