- 浏览: 1451545 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
最近做的一个java
与flash通讯的项目,由于项目框架的需要,要把AMF
格式解析代码抽出.代码有点乱,现丑了. package com.musicxx.web.servlet;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import juan.framework.action.Action4J;
import juan.framework.arguments.ArgumentsFactory;
import juan.framework.arguments.IArguments;
import juan.view.context.IContext;
import juan.view.context.impl.InnerContextImpl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import flex.messaging.io.SerializationContext;
import flex.messaging.io.amf.ActionMessage;
import flex.messaging.io.amf.Amf0Input;
import flex.messaging.io.amf.Amf0Output;
import flex.messaging.io.amf.Java15Amf0Output;
import flex.messaging.io.amf.MessageBody;
import flex.messaging.io.amf.MessageHeader;
/**
* Description : AMF通讯方式
*
* @author: JayChou
* @version 1.0
* @Created on Aug 18, 2008 5:57:21 PM
*/
public class AmfServlet extends HttpServlet {
private static Log logger = LogFactory.getLog(AmfServlet.class);
/**
* flash-->java
* @return
* @throws IOException
* @throws ClassNotFoundException
* @throws Exception
*/
private ActionMessage in(InputStream is) throws IOException, ClassNotFoundException {
ActionMessage inMs = new ActionMessage();
Amf0Input amfIn = new Amf0Input(SerializationContext.getSerializationContext());
amfIn.setInputStream(is);
int version = amfIn.readUnsignedShort();
inMs.setVersion(version);
int headerCount = amfIn.readUnsignedShort();
for (int i = 0; i < headerCount; ++i) {
MessageHeader header = new MessageHeader();
inMs.addHeader(header);
header.setName(amfIn.readUTF());
header.setMustUnderstand(amfIn.readBoolean());
amfIn.readInt();
amfIn.reset();
header.setData(amfIn.readObject());
}
int bodyCount = amfIn.readUnsignedShort();
for (int i = 0; i < bodyCount; ++i) {
MessageBody body = new MessageBody();
inMs.addBody(body);
body.setTargetURI(amfIn.readUTF());
body.setResponseURI(amfIn.readUTF());
amfIn.readInt();
amfIn.reset();
body.setData(amfIn.readObject());
}
amfIn.close();
amfIn=null;
return inMs;
}
/**
* java --> flash
* @param o
* @throws IOException
* @throws Exception
*/
private void out(ActionMessage outMs,HttpServletRequest request, HttpServletResponse response) throws IOException {
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
Amf0Output amfOut = new Java15Amf0Output(SerializationContext.getSerializationContext());
int version = outMs.getVersion();
amfOut.setAvmPlus(version > 0);
amfOut.setOutputStream(outBuffer);
amfOut.writeShort(version);
int headerCount = outMs.getHeaderCount();
amfOut.writeShort(headerCount);
for (int i = 0; i < headerCount; ++i) {
MessageHeader header = outMs.getHeader(i);
amfOut.writeUTF(header.getName());
amfOut.writeBoolean(header.getMustUnderstand());
amfOut.writeInt(-1);
amfOut.reset();
amfOut.writeObject(header.getData());
}
int bodyCount = outMs.getBodyCount();
amfOut.writeShort(bodyCount);
for (int i = 0; i < bodyCount; ++i) {
MessageBody body = outMs.getBody(i);
if (body.getTargetURI() == null)
amfOut.writeUTF("null");
else
amfOut.writeUTF(body.getTargetURI());
if (body.getResponseURI() == null)
amfOut.writeUTF("null");
else
amfOut.writeUTF(body.getResponseURI());
amfOut.writeInt(-1);
amfOut.reset();
amfOut.writeObject(body.getData());
}
response.setContentType(request.getContentType());
response.setContentLength(outBuffer.size());
outBuffer.writeTo(response.getOutputStream());
response.flushBuffer();
amfOut.flush();
amfOut.close();
amfOut=null;
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Action4J action = new Action4J();
IContext icontext = new InnerContextImpl();
IArguments args = ArgumentsFactory.getArguments();
action.setContext(icontext);
action.setRequest(req);
action.setResponse(resp);
action.setServletConfig(getServletConfig());
action.setServletContext(getServletContext());
ActionMessage outMs = new ActionMessage();
ActionMessage inMs = null;
try {
inMs = in(req.getInputStream());
outMs.setVersion(inMs.getVersion());
for(int i=0;i<inMs.getBodyCount();i++){
MessageBody body = inMs.getBody(i);
String method = body.getReplyMethod().split("\\.")[1];
Object[] o = (Object[]) body.getData();
Object[] arr = (Object[]) o;
for (int j = 0; j < arr.length; j++){
args.add("index" + (j+1), arr[j]);
}
action.execute("/"+method, args);
Object result=action.getContext().get("result");
MessageBody responseBody = new MessageBody();
responseBody.setData(result);
responseBody.setTargetURI( body.getResponseURI()+ "/onResult");
outMs.addBody(responseBody);
args.clear();
}
} catch (Exception e) {
logger.error(e.getMessage());
MessageBody responseBody = new MessageBody();
responseBody.setData(new Object[]{100});
responseBody.setTargetURI( inMs.getBody(0).getResponseURI()+ "/onResult");
outMs.addBody(responseBody);
} finally {
args.clear();
out(outMs,req,resp);
}
}
}
发表评论
-
Apache FlexJS 0.0.1 和 Apache Flex FalconJX 0.0.1发布
2015-11-01 19:44 554原文地址:http://note.sdo.com/u/634 ... -
Flash Catalyst 常用键盘快捷键
2011-03-28 15:38 1065转自:http://www.riameeting.com/ ... -
8款很实用的Actionscript写的位图(BitMap)操作类
2011-03-24 12:09 1943AS3 Scale9 Bitmap ... -
VC++ 项目中使用 FLEX
2011-03-24 09:13 19491, http://hi.baidu.com/qinpc/ ... -
flex应用开发/flash应用开发 代做flash作业/flex作业
2011-01-09 20:37 347专业承接flex应用开发/flash应用开发 ... -
脑袋里的秘密,输入姓名就可以知道你在想什么! flex版
2010-12-29 11:34 2548输入名字就可以知道她/他在想什么的工具~~ -
一个flex聊天机器人
2010-12-18 10:42 1657无聊之下所作,供大伙娱乐,随边聊聊。。。 -
Flex:基于Flex-config.xml的命令行编译
2009-07-01 09:33 1893关键字: Flex Flex2 编译 mxmlc ... -
BulkLoader类和PV3D
2009-06-26 17:02 1969AS3取消了movieclip的loader类,所以加 ... -
使用 Flex Builder 3.x 分析工具 Profile
2009-06-25 11:26 3415前言 关于分析工具 (原文见Flex Builder ... -
AMF3+JAVA的调用范例
2009-06-24 17:44 2564[AS3]AMF3+JAVA的调用范例 amf是Ad ... -
Flex 程序性能测试
2009-06-24 16:02 1952Flex 程序性能测试 作者:叶晖俊 yehui ... -
Flex RemoteObject类参考
2009-06-19 11:39 1243<mx:RemoteObject>标记 ... -
flex画的菱形
2009-05-11 16:19 3456package com { impo ... -
理解 Flex itemRenderer - 第 4 部分: 状态和过渡
2009-05-08 09:23 1718itemRenderer 最擅长与应用 ... -
理解 Flex itemRenderer - 第 5 部分: 效率
2009-05-08 09:21 1769如果您要显示大量 itemRenderer-无论在 Dat ... -
VO to XML converter
2009-05-04 09:00 1152private function convertToXM ... -
Flex全屏
2008-09-26 11:11 1795private function goFullScreen( ... -
ExternalInterface在Firefox下出错的bug
2008-09-16 09:28 3181使用Document Class为避免命名空间冲突,通常会取消 ... -
Flex与Win32通信实例之ExternalInterface
2008-09-11 16:34 3490关键字: flex win32 vc++ vc externa ...
相关推荐
- **Flash External Interface (FEI)**:Flash Player允许ActionScript代码通过ExternalInterface API调用JavaScript函数,进而与网页中的Java代码进行交互。这种方式适用于浏览器环境,Java可以通过JavaScript操作...
Java与Flash之间的数据交互,允许前端展示与后端数据服务紧密结合,实现动态内容的实时更新和用户交互。 实现Flash和Java的数据交互通常有两种主要方式:Socket通信和AMF(Action Message Format)。 1. **Socket...
Java Socket AMF3 Flash Game Framework 是一个专门为Flash游戏设计的后端框架,它结合了Java技术和AMF3编码,使得游戏开发者能够构建交互性强、安全可靠的Web游戏。在这个框架中,Java作为服务器端语言,提供了稳定...
这个项目“Flash与JSP和Java交互”可能包含了以上技术的实例,通过导入到MyEclipse这样的集成开发环境(IDE)中,你可以查看源代码,理解它们是如何配合工作的。例如,可能有一个JSP页面作为前端接口,接收用户请求...
在Java端,可以使用java.net.Socket类来创建服务器端,而在Flex客户端,使用Flash Player的Socket类进行通信。 在实际应用中,开发者通常根据项目需求选择最适合的交互方式。AMF适合大量数据交换且对性能有较高要求...
Flex与Java的交互是跨平台应用开发中的常见技术组合,允许前端用户界面(UI)与后端业务逻辑进行高效沟通。在本文中,我们将深入探讨如何使用Flex 4与Java进行通信,并通过三种不同的方法实现这一目标:RemoteObject...
### Flex与Java交互知识点 #### 一、简介 在Flex与Java进行交互的过程中,主要涉及到的是前后端的数据传输。本文将详细介绍如何通过Flex与Java进行数据交换,包括Flex客户端的实现方式、Java后端的数据处理逻辑,...
在Java环境中,我们通常使用BlazeDS,这是Adobe提供的一个免费服务器端技术,它可以提供AMF服务,让Spring与Flash进行无缝通信。 3. **配置Spring MVC**: 要使用BlazeDS,我们需要在Spring的配置文件中添加相应的...
Plug_in+blazeds实现Flex和Java交互.pdf"的文件,这很可能是一个详细的教程或指南,教你如何在MyEclipse 8.5集成开发环境中使用Flash Builder 4(FB4)插件和BlazeDS来实现Flex与Java之间的通信。 1. **Flex与Java...
1. **Flash External Interface (AS3):** 这是Flash Player提供的一个API,允许ActionScript 3代码(Flash的编程语言)调用JavaScript函数,进而与网页中的C# Web服务或Ajax接口通信。C#服务端可以处理请求并返回...
本主题将深入探讨如何使用C#作为后端语言,与前端的Flash进行有效的数据通信,实现丰富的用户交互体验。 C#是Microsoft开发的一种面向对象的编程语言,广泛应用于桌面应用、Web应用以及游戏开发等领域。它提供了...
Java和Flash是两种在Web...总之,Java与Flash的交互技术是一个综合了网络编程、数据交换格式和客户端服务器架构等多个领域的复杂主题。通过深入理解和掌握这些通信机制,开发者可以构建出更具创新性的跨平台Web应用。
在Flash中,我们可以使用ActionScript 3.0来编写代码,通过XMLSocket或HTTPService类与Java后台进行数据通信。XMLSocket允许双向实时通信,适合需要频繁交互的应用;而HTTPService则基于HTTP协议,更适合简单的请求-...
本示例“Flash+Java通信例子”聚焦于如何利用Adobe Flash与Java应用程序之间进行数据交互。这两种技术结合,可以为用户提供丰富的交互式Web体验,特别是在多媒体、游戏和动态内容展示方面。 Flash是一款广泛应用于...
Flex和Java交互搭建是开发富互联网应用程序(RIA)时常用的一种技术组合,它允许前端的Flex界面与后端的Java服务器进行数据交换和业务逻辑处理。这个项目新手用来练手非常合适,因为其结构简单,易于理解。接下来,...
这个框架允许开发者利用ActionScript(Flash编程语言)与Java进行交互,实现富互联网应用程序(RIA)的开发。OpenAMF提供了一种高效的AMF(Action Message Format)数据序列化机制,使得Java对象可以被快速、高效地...
在Flex中,我们可以使用Flash Player的Socket类来创建socket连接,而在Java中,通常会用到ServerSocket和Socket类来监听和接受连接请求。这种方式的优点在于能够实时、高效地传输大量数据,但相对于AMF,它的实现...
综上所述,Flex与Java数据交互是一个涉及客户端与服务器端协同工作的复杂过程,涉及到的技术点包括AMF协议、服务暴露、数据序列化、错误处理等多个方面。通过深入理解和熟练掌握这些知识点,开发者可以构建出高性能...
这种交互通常是通过AMF(Action Message Format)协议实现的,它提供了一种高效的数据序列化方式,使得Flex能够与Java服务进行低延迟的双向通信。 描述中的“入门实例”意味着我们将探讨如何创建一个基础的Flex-...