最近在开发过程遇到一些小问题,是以前没怎么弄过的,过来这里记录一下:
1:flex安全沙箱问题。
问题描述:flex在flashplay9.0后增加新的功能:安全沙箱。
一般在发布服务时,flex客户端有一个默认的安全域:如:http://localhost:7001/,但如果你在服务中调用http://127.0.0.1:7001/时就会报安全沙箱冲突的错误,虽然两地址可能在本地代理中,是同一服务地址,但还是属于夸域。
解决办法,有如下几种:
1)在服务器根目录下,放入如下文件:crossdomain.xml,测试访问:http://127.0.0.1:7001/crossdomain.xml,这个对于tomcat是直接可以放入root目录,但有web服务器,可能得设置一下,如建立一个'/'的服务。这样flex客户端在跨域时,会先去查看crossdomain.xml里的相关规则。
2)手动加载crossdomain.xml:
Security.loadPolicyFile(“http://127.0.0.1:7001/gmap/crossdomain.xml”);
3)中转服务,如将跨哉操作改到jsp文件或后台服务端里进行。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" > <cross-domain-policy> <site-control permitted-cross-domain-policies="all" /> <allow-access-from domain="*" /> <allow-http-request-headers-from domain="*" headers="*"/> </cross-domain-policy>
2.flex的上传功能:
private function upload(): void { var docFilter:FileFilter = new FileFilter("Documents", "*.pdf;*.rar;*.txt;*.jpg;*.gif;*.png;*.xls;*..xlsx;*.doc;*.docx"); fileUpLoad.addEventListener(Event.SELECT,selectedHandler); fileUpLoad.addEventListener(Event.COMPLETE,CompletedHandler); fileUpLoad.addEventListener(ProgressEvent.PROGRESS,progressHandler); fileUpLoad.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); fileUpLoad.browse([docFilter]); } private function selectedHandler(e:Event):void { fileUpLoad.removeEventListener(Event.SELECT,selectedHandler); Alert.show("上传 " + fileUpLoad.name + " (共 "+Math.round(fileUpLoad.size/1024)+"KB)?", "确认上传",Alert.YES|Alert.NO, null,proceedWithUpload); } private function proceedWithUpload(e:CloseEvent): void { if (e.detail == Alert.YES) { var request:URLRequest = new URLRequest("../fileUpload.do"); try { fileUpLoad.upload(request); this.loadbar.visible = true; } catch (error:Error) { cancelUpload(); this.loadbar.visible = false; Alert.show("上传失败","错误"); } } if(e.detail == Alert.NO){ cancelUpload(); } } private function progressHandler(e:ProgressEvent):void { lblProgress.text = " 已完成 " + e.bytesLoaded + " 字节,共 " + e.bytesTotal + " 字节"; var proc: uint = e.bytesLoaded / e.bytesTotal * 100; uploadbar.setProgress(proc, 100); uploadbar.label= "当前进度: " + " " + proc + "%"; } private function CompletedHandler(e:Event):void { var reference:FileReference=e.target as FileReference; this.loadbar.visible = false; cancelUpload(); } private function ioErrorHandler(e:IOErrorEvent):void { this.loadbar.visible = false; cancelUpload(); Alert.show(e.toString()); } <mx:ProgressBar id="uploadbar" height="80%" labelPlacement="bottom" themeColor="#F20D7A" minimum="0" visible="true" maximum="100" label="上传进度: 0%" direction="right" mode="manual" width="200"/>
CheckFileExist(uploadPath, true); private int maxPostSize = 10 * 1024 * 1024; response.setContentType("text/html; charset=UTF-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024 * 4); ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(maxPostSize); List<?> fileItems = null; try { fileItems = upload.parseRequest(request); Iterator<?> iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); logger.info(item.toString()); if (!item.isFormField()) { String filePath = uploadPath + item.getName(); if (CheckFileExist(filePath, false)) { try { item.write(new File(filePath)); } catch (Exception ex) { logger.info(ex.getMessage()); message = "上传失败!|"+ex.getMessage(); } }else{ message = "文件已存在!"; } } } } catch (FileUploadException ex1) { logger.info("FileUploadException->" + ex1.getMessage()); message = "上传失败!|"+ex1.getMessage(); }
3.文件下载
private function downLoad():void { var downloadURL:URLRequest = new URLRequest("../fileDownload.do"); downloadURL.method=URLRequestMethod.POST; var params:URLVariables = new URLVariables; params.fileName = filename.label; downloadURL.data=params.toString(); fileDownLoad.download(downloadURL, filename.label); fileDownLoad.addEventListener(Event.COMPLETE, completeHandler); fileDownLoad.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); fileDownLoad.addEventListener(Event.CANCEL, cancelHandler); } private function cancelHandler(event:Event = null):void { fileDownLoad.removeEventListener(Event.CANCEL, cancelHandler); fileDownLoad.removeEventListener(Event.COMPLETE, completeHandler); fileDownLoad.removeEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { cancelHandler(); Alert.show("下载成功!","提示"); } private function ioErrorHandler(e:IOErrorEvent):void { cancelHandler(); Alert.show(e.toString()); }
OutputStream out = response.getOutputStream(); InputStream in = new BufferedInputStream(new FileInputStream(uploadPath + fileName)); fileName = new String(fileName.getBytes(), "utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ";"); int len = 0; byte[] buf = new byte[512]; try{ while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } }finally{ out.close(); in.close(); }
相关推荐
这个小例子是使用Java作为服务端、Flex做前台,对一个xml文件的读取和写入。 环境:MyEclipse6.0.1+Flex3插件版,jdk1.6,tomcat6.0,dom4j1.6.1,lcds.war, 使用技术:1.Java+flex,及其对象的转换。 2.Java方面...
Java和Flex是两种在开发富互联网应用程序(RIA)时常用的技术。Java以其强大的后端处理能力和跨平台特性闻名,而Flex则是一种基于ActionScript的前端框架,主要用于构建交互性强、图形用户界面丰富的Web应用。本资源...
《基于Java+Flex实现的聊天程序详解》 在信息技术领域,构建实时的在线聊天系统是一项常见的挑战。本项目“基于Java+Flex实现的聊天程序”提供了一种有效的解决方案,它结合了Java的强大后端处理能力和Flex的富...
java+flex4 使用的是BlazeDS方式中得 remoting方式与JAVA交互 由于没有美工 UI十分丑陋望学者见谅 目前功能只实现了这些 flex 根据状态切换改变页面显示和页面跳转 1.登陆 2.商品管理 (商品的 增删改查 ) 双击...
Java和Flex之间的通信是开发富互联网应用程序(RIA)时的一项关键技术。这个"java+flex通信源码"项目提供了一个实际的、完整的示例,演示了如何利用BlazeDS技术实现Java后端与Flex前端的无缝交互。下面我们将深入...
Java、Flex和BlazeDS是开发富互联网应用程序(RIA)时常用的一组技术组合。Java在后端提供数据处理和业务逻辑,而Flex作为前端UI框架...解压并研究这些文件,将有助于你更好地理解和实践Java+Flex+BlazeDS的整合开发。
提供的文件“javaflex blazeds.pdf”可能是关于如何配置和使用BlazeDS的文档,这对于理解Java和Flex之间的通信至关重要。而“flexweb”可能是一个Flex项目文件夹,包含MXML和ActionScript代码,用于创建前端用户界面...
这篇名为"Java+Flex+BlazeDS HelloWorld例子"的博客文章,很可能是对如何使用这些技术进行基本的示例演示。通过阅读这篇文章,我们可以学习到如何配置和运行一个简单的Java和Flex应用,以及BlazeDS在其中的角色。 1...
【Flex留言板Java+Flex+LCDs项目源码详解】 Flex是一种基于ActionScript的开源框架,主要用于构建富互联网应用程序(Rich Internet Applications,RIAs)。在本项目中,它与Java和LCDS(LiveCycle Data Services)...
在Oracle数据库环境中,结合Spring、Java和Flex进行分页查询是常见的需求。本文档主要讨论如何利用Oracle存储过程、jdbcTemplate(Spring框架的一个组件)以及Flex前端实现这一功能。 首先,Oracle存储过程是实现...
本教程将探讨如何使用JAVA和FLEX技术实现摄像头捕捉图像。JAVA和FLEX是两种不同的技术,但可以协同工作以实现跨平台的富互联网应用程序(RIA)。 首先,JAVA作为一个强大的后端开发语言,主要负责处理服务器端逻辑...
Java和Flex是两种常用于构建富互联网应用程序(RIA)的技术,它们可以协同工作,提供实时、交互式的用户体验。在这个“java+flex基于socket的聊天案例”中,我们将深入探讨如何利用Java作为服务器端技术,Flex作为...
### Oracle + jdbcTemplate + Spring + Java + Flex 实现分页 #### 一、Oracle存储过程分页 在Oracle数据库中,为了实现高效的分页查询,通常会采用存储过程的方式来完成。这种方式能够有效地减少网络传输的数据量...
这个项目是用Java和FLEX两种技术编写的,展示了跨平台游戏开发的可能性。Java是一种广泛使用的编程语言,尤其在服务器端和企业级应用中表现出色;而FLEX则是一种用于构建富互联网应用程序(RIA)的框架,主要应用于...
这个是MyEclips6.6+Flex 3.0 的工程搭建。这是个将Java和Flex整合在一个完整的工程里的一个环境搭建手册。步骤清晰。
本篇文章主要探讨了如何将Adobe FlexBuilder与Eclipse平台中的MyEclipse整合,以便于开发Java和Flex混合应用。FlexBuilder是一款专门用于构建Flex(ActionScript和MXML)应用的集成开发环境(IDE),而MyEclipse则是...
里面含有 blazeds.war包 以及相关教程,和一个 flex3跟struts2.16+hibernate3.25+spring2.5组合的实例和相应数据库,不过里面没有jar包,如有需要,可以向我要 QQ 826785300
这是一个基于Java和Flex技术构建的在线电影网站源代码项目,主要功能是实现视频的在线播放。下面将详细解析这个项目的各个组成部分以及相关的知识点。 首先,`Java`是后端开发的主要语言,它提供了服务器端的功能...
在"flex+java+mysql登录"这个场景中,我们主要探讨的是如何使用Flex客户端与Java后台进行通信,以及通过Java处理数据库交互来实现用户登录功能。 1. Flex数据库操作:Flex中的数据访问通常通过 BlazeDS 或 LCDS ...