GWT-Ext 体验之旅,第 4 部分: 体验拖拽和通信(3)

来源:developerWorks 中国 作者:冯 鑫
  

此 URL 是一个指向服务器端的资源路径,我们首先在 Form 中设定资源路径然后提交给服务器端。这与编写 HTML 很相似,只是这里我们用 java 代码的形式写出来。另外,此 URL 也可以指定到服务器中的 Servlet 。这样,可以完成更复杂的应用逻辑。

本例所讲的是一个在 GWT 下应用同步通信的方式完成一个文件下载的例子。

首先,要在客户端的一个触发事件中完成如上述请求服务的代码。


清单 5. 完成请求服务的代码
				
 // 这里指向一个专门负责下载文件的 Servlet ://DemoServiceConstants.DOWNLOAD_TASK_FILE 
 String URL= GWT.getModuleBaseURL() + DemoServiceConstants.DOWNLOAD_TASK_FILE + 
            "?fileLocation=" + fileLocation;; 

 FormElement formElement = Document.get().createFormElement(); 
 formElement.setAction(url); 
 formElement.setName("ThisActionName"); 
 formElement.setMethod("post"); 
 Document.get().appendChild(formElement); 
 formElement.submit();

其次,要在服务器端定义一个 DownloadFile Servlet 用于响应客户端的请求以及完成从服务器上读取文件和发送文件的 InputStream 和 OutputStream 。


清单 6. DownloadFile Servlet
				
Public class DownloadFile extends HttpServlet{ 
   // 覆写 doGet 方法, 参数 request 是来自客户端的请求对象
   // 参数 response 是服务器端的响应对象
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws 
   ServletException, IOException { 
   // 取得文件路径
   String location = request.getParameter("fileLocation"); 
   // 定义读取文件的类 RandomAccessFile 
   File file = new File(location); 
   RandomAccessFile accessFile = new RandomAccessFile(file, "r"); 
   // 如果想要在下载时出现一个下载对话框,可以在 Response Header 中做如下设置
   response.addHeader("Content-Disposition","attachment;filename=\""+file.getName( 
   )"\""); 
   response.addHeader("Content-Length", String.valueOf(accessFile.length())); 
   // 定义 OutputStream 
   OutputStream out = response.getOutputStream(); 
   // 从源文件流中读入并写入到输出流中 , 具体可参见代码
   …
   …
   } 
}





结束语

GWT-Ext 是目前主流的以 Java 为基础的 Web 界面编程工具。从笔者对几个 GWT 的扩展工具的实际经验横向比较来看,GWT-Ext 拥有非常优秀的编译打包速度,丰富的 API,加上大量的编程实例和论坛讨论,无可置疑的使 GWT-Ext 成为目前最优秀的 Web 2.0 的编程工具中的一员,相信 GWT-Ext 能有一个美好的未来。(责任编辑:A6)


时间:2009-07-01 14:21 来源:developerWorks 中国 作者:冯 鑫 原文链接

好文,顶一下
(4)
80%
文章真差,踩一下
(1)
20%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量