- 浏览: 420101 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (244)
- struts2 (15)
- ognl (1)
- hibernate (17)
- gwt (17)
- GROOVY (2)
- GRAILS学习 (7)
- SPRING (4)
- AJAX (2)
- JQUERY (6)
- XML (1)
- DWR (3)
- 线程 (0)
- SVN (0)
- json (1)
- anotation (0)
- 反射 (2)
- rapidframework (0)
- OA工作流 (2)
- 事务 (0)
- mysql (0)
- oracle (26)
- EXTJ (0)
- 求职 (2)
- 随笔 (22)
- 注释 (1)
- java综合 (30)
- 设计模式 (1)
- JSP SERVLET (2)
- 插件 (7)
- 应用 (3)
- HTML (5)
- flex (13)
- android (8)
- javascript (14)
- Exception (0)
- Linux (2)
- 计算机常识 (3)
- EXCEL (2)
- 正则表达式 (1)
- 开源工具 (2)
- 测试 (1)
- 生活 (7)
- 房子 (0)
- 购房大学 (4)
- UML (1)
- 服务器 (1)
- 发展 (1)
- 英语 (1)
- 项目管理 (1)
- 摘 (1)
- 网站 (1)
最新评论
-
a347911:
架构师教程:https://note.youdao.com/s ...
架构师之路--- 一个四年 JAVA 程序员的工作经历 转 -
hzxlb910:
对我帮助很大。
架构师之路--- 一个四年 JAVA 程序员的工作经历 转 -
xly_971223:
引用因此,while (!isInterrupted())也可 ...
Java 终止线程方法 -
zdglt88:
其实这个datagrid挺简单的,没有难度
Jquery easy ui 之datagrid简介 -
完善自我:
抓住重点,支持一下!
Jquery easy ui 之datagrid简介
How does it work.¶
The browser renders a form with a file input and a hidden iframe.
Once the user selects a file (automatically or pushing a submit button) the browser asks the server for a session cookie using an ajax request, and submits the form.
The server starts the reception and continuously updates a session object with the process information.
While the file is being uploaded, the browser asks periodically the server for the progress status using ajax. It is possible since most browsers can open two simultaneous connections to the same server.
The server responds with a simple xml document with the real information about the size of the file and the amount of data transferred, or with an error message.
The client parses the response, calculates percentage, speed, remaining time, and updates a progress bar widget with this information.
Finally when the form has been completely sent, the server response is written in the iframe, instead of the main document.
In the case of any error, the client shows a message to the user.
The client code executes customisable methods when the file input changes, the upload process starts and finishes.
It is possible to cancel the file while it is being transfered. Because of the impossibility to cancel an active upload in the client side, the browser sends an ajax request to the server, and the server closes the socket.
*文件上传编写*
1.GWT前台
[1]加入gwtupload.jar与commons-fileupload-1.2.jar以及commons-io-1.3.1.jar、 log4j.jar ;
[2]编辑***.gwt.xml文件,加入:
<inherits name="gwtupload.GWTUpload"/>
<stylesheet src="Upload.css"/>
[3]新建uploader对象:
MultiUploader defaultUploader = new MultiUploader();
defaultUploader.avoidRepeatFiles(true);设置避免重复文件上传
defaultUploader.setMaximumFiles(3); 设置上传文件最大数量
defaultUploader.setServletPath("a/a/a/a.upload"); 设置servletpath
Button submitButton = new Button("<B>上传</B>"); 按钮触发后台方法进行操作
submitButton.setWidth("70");
submitButton.addClickHandler(new com.google.gwt.event.dom.client.ClickHandler() {
public void onClick(com.google.gwt.event.dom.client.ClickEvent arg0) {
RequestBuilder rbBuilder = new RequestBuilder(RequestBuilder.GET, "后台方法访问路径");
try {
rbBuilder.sendRequest("", new RequestCallback() {
public void onResponseReceived(Request request, Response response) {
SC.say(response.getText());
}
public void onError(Request request, Throwable exception) {
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
});
2.Grails后台项目
grails install-plugin gisuploader 加入插件 ,配置后台上传处理servlet
加入gwtupload.jar与jxl.jar、commons-fileupload.jar
从session中取得FileItem类型的集合,对集合进行遍历,取得文件的输出流进行处理(存入数据库或硬盘):
def files = (Vector<FileItem>)request.getSession().getAttribute("FILES");
for (FileItem item : files ) {
if (false == item.isFormField()) {
item.getOutputStream();
}
}
*上传明细文档*
# 新建MutiUploader,实例化Uploader,浏览器会渲染出一个form和隐藏的iframe
# 为生成的uploader对象注册onSubmitFormHander, setFileInput()设置文件上传框
# 为fileInput注册onFileInputChanged,来监控用户选择文件。
# 用户选择文件后,创建定时器automaticUploadTimer,将文件加入上传队列,并将文件状态设置为QUEUED,设置进度条为0
# 检测到文件队列中有文件,提交文件,激活onSubmitFormHander
# sendAjaxRequestToValidateSession()向服务器端发送Ajax检测session是否存在的请求,得到服务器端回应renderXmlResponse()后,正式提交上传文件。
# 进入后台接收请求dopost(),读取post请求parsePostRequest(),创建新的session,将读取到的文件项的集合放入session中,renderXmlResponse()返回客户端
# 设置客户端定时器updateStatusTimer定时通知IsUpdateable来更新status:为请求对象RequestBuilder注册onStatusReceivedCallback,
parseAjaxResponse(response.getText())连续定时读取服务器端监听器doget()的getUploadStatus()返回请求,读取xml文件具体内容Utils.getXmlNodeValue(),并根据返回数据设置进度条进度,
statusWidget.setProgress(transferredKB, totalKB)。
# 如此连续定时阶段上传,直至文件上传结束,uploadFinished()判断文件上传成功后,将上传状态更新为SUCCESS,关闭定时器。进度条隐藏,状态显示为DONE。
# 若在上传中途或结束后进行删除,则回调在statusWidget中注册的cancelHandler,进而调用uploader对象的cancel()方法,sendAjaxRequestToDeleteUploadedFile()向后台发送ajax删除请求,并将上传状态更新为DELETED。状态显示为DELETED。
# 若中途上传出错,则会调用cancelUpload()方法结束上传,并将上传状态更新为ERROR。状态显示为ERROR。
发表评论
-
GWT study path
2011-04-08 17:26 1053GWT study path Download and so ... -
smartgwt上传跳转的问题----iframe 嵌在当前页面 form 标签里面有指定跳到那个frame里面
2010-10-08 11:13 2518formDoc.setEncoding(Encoding.MU ... -
获取后台返回数据
2010-09-27 11:24 1055以添加数据为例: 后台: 返回数据时如= ... -
SmartGwt : ListGrid setSortField setSortDirection 无效
2010-09-07 10:17 1499原创 收藏 开发环境: JDK 1.6 Gwt2.0.3 ... -
Smart Client智能客户端技术初探
2010-08-13 18:11 1783一、 Smart Client ... -
关于GWT中.gwt.xml文件中排序的问题
2010-07-16 18:39 999今天碰到一个有趣的问题,我用的界面是2.1企业版那种进入界面, ... -
弹出搜寻与选择窗口 以及限制输入
2010-06-28 13:43 1343final TextItem managercenter=ne ... -
关于smartgwt中form和数据源绑定来进行save后返回值的问题
2010-06-22 17:16 1732form.save(DSCallback callback)中 ... -
gwt 国际化
2010-06-22 17:06 2122一般来说是这样: 在*.gwt.xml中加入 显示中文 & ... -
上传下载模板
2010-06-21 09:50 1170// HLayout hLayout1 = new HLay ... -
GWT 入门
2010-06-20 13:22 11571.安装springsource 然后安装其GWT插件 htt ... -
GWT向后台传参数 后台接收不到的情况
2010-06-18 18:00 1035this.setOperationBindings( ... -
使用IPickTreeItem 注意 :
2010-06-11 18:15 951IPickTreeItem areaName = new IP ... -
GWT下载
2010-05-21 13:26 1190MyLinkItem download = new MyLin ... -
GWTEXT下载
2010-05-21 13:25 1690GWT实现文件上传下载 关键字: gwt实现文件上传 下载 ... -
eclipse或springsource启动时总是卡在build workspace
2010-05-13 12:21 2430building workspace自动编译整个空间,Ecli ...
相关推荐
在学习GWT的过程中,练习StockWatcher可以帮助你掌握GWT的核心组件和工作原理。逐步理解并实践这些知识点,你将能够创建更复杂、功能丰富的GWT应用程序。记得在实践中不断尝试、调试和优化,以加深对GWT的理解。
通过阅读博文(链接已给出,但在这里无法直接访问),你可能会了解到如何解析和理解GWT的内部工作原理,以及如何利用GWT的相关工具提升开发效率。例如,可能是关于性能优化、调试工具的使用,或者是GWT与其他工具...
通过研究这些示例,开发者可以更好地理解GWT的工作原理和最佳实践。 例如,一个示例可能展示了如何创建一个按钮控件,当用户点击按钮时,通过GWT的RPC机制向服务器发送请求,获取数据并更新页面上的显示。另一个...
最后,"GWT.ppt"可能是GWT的一份PPT演示文稿,通常会包含GWT的核心概念、工作原理以及开发流程的概述,适合初学者快速入门。 通过这些资源,开发者不仅可以深入理解GWT和EXT-GWT的基本概念,还能学习到实际开发中的...
Java是一种广泛使用的编程语言,尤其在开发Web应用程序时。GWT(Google Web Toolkit)是Google推出的一个开源工具包,它允许...同时,这也是一个实践Java到JavaScript编译过程的好机会,加深对GWT工作原理的理解。
GWT 1.5.2发布于2008年,虽然现在已经比较过时,但对于初学者来说,它仍然是一个理解GWT基本概念和工作原理的好起点。 GWT的核心理念是通过Java编写客户端代码,然后自动编译为高效的JavaScript,使得开发者可以...
”程序,以帮助理解GWT的基本工作原理。 1. **创建模块类**:在项目的src目录下新建一个Java类,例如`HelloGWT.java`。 2. **编写代码**: ```java public class HelloGWT extends GWTEntryPoint { public void ...
在高级教程中,你将接触到GWT的高级特性,如GWT编译器的工作原理,如何优化代码以提高性能,以及如何调试GWT应用。这一部分还将深入讨论GWT的客户端数据管理,包括使用 Gin 和 Guice 进行依赖注入,以及使用GWT的 ...
## GWT的工作原理 1. **编译过程**:GWT使用Java源代码作为输入,然后通过Java-to-JavaScript编译器将其转换成优化过的JavaScript代码,这个过程称为GWT编译。编译器会处理类型检查、优化和代码分割,确保生成的...
通过这个案例,你可以学习如何将GWT应用与数据库集成,理解GWT RPC的工作原理,以及如何安全有效地进行数据库操作。这将有助于你构建更复杂的GWT应用程序,提供丰富的用户体验并确保数据的安全交互。
在接手GWT项目时,理解GWT的工作原理、编译流程以及IDEA中的配置至关重要。同时,由于GWT技术相对较旧,可能遇到的文档和教程可能已过时,因此需要具备一定的问题排查能力。保持对新版本GWT和相关工具的了解,以便更...
这本书《GWT揭秘》深入探讨了GWT的工作原理和内部机制,提供了丰富的源码分析,帮助开发者更好地理解和运用GWT。现在,我们将深入探讨GWT的核心概念、工作流程以及源码解析的关键点。 1. **GWT简介** GWT最初由...
- **实战演练**:通过分析和运行这些示例,你可以进一步理解GWT的工作原理,以及如何在实际项目中运用。 总之,GWT结合Ajax技术为开发高性能的Web应用提供了一种强大而高效的方法。通过学习和实践GWT开发实例,...
对于初学者,这是一个很好的机会来了解GWT的工作原理,如何创建UI,以及如何与服务器进行通信。通过查找并修复这个BUG,可以提高对GWT框架的理解,并且提升解决实际问题的能力。建议先阅读GWT的官方文档,理解基本...
GWT,全称为Google Web Toolkit,是Google推出的一款开源JavaScript开发框架,主要用于构建富互联网应用...通过理解GWT的工作原理和使用方法,开发者可以更高效地利用Java进行Web开发,并享受到其带来的便利和优势。
理解这两框架的源码有助于深入学习其工作原理,而它们作为工具,可以帮助开发者构建高效、可维护的Web应用程序。 总结来说,本文可能会涵盖GWT的通信机制,包括RequestBuilder和AsyncCallback的使用,以及如何将GXT...
深入研究SmartGWT的源码,可以帮助开发者更全面地了解其工作原理和内部机制。源码中包含了组件的实现逻辑、事件处理和数据通信策略等,这对于定制化开发或优化性能是非常有价值的。通过学习源码,开发者可以学习到...
《GWT初学者手册》是针对想要学习Google Web Toolkit...综上所述,《GWT初学者手册》将帮助开发者理解GWT的工作原理、语言特性限制以及如何在各种浏览器环境下构建和优化应用程序,是初学者快速入门GWT的宝贵资源。
下面我们将深入探讨GWT的主要特点、工作原理以及如何开始使用GWT进行开发。 1. **GWT的特点** - **类型安全**:由于使用Java编程,GWT提供了静态类型检查,避免了常见的JavaScript错误。 - **跨浏览器兼容**:GWT...