Servlet异步处理和文件上传
1. 什么是异步处理 
    原来,在服务器没有结束响应之前,浏览器是看不到响应内容的!只有响应结束时,浏览器才能显示结果! 
    现在异步处理的作用:在服务器开始响应后,浏览器就可以看到响应内容,不用等待服务器响应结束! 
 
  2. 实现异步的步骤 
 
  * 得到AsyncContext,它异步上下文对象 
    AsyncContext ac = request.startAsync(request,response); 
  * 给上下文一个Runnable对象,启动它!(给上下文一个任务,让它完成!) 
    ac.start(new Runnable() { 
      public void run() { 
        ... 
      } 
    }); 
 
  * @WebServlet(urlPatterns="/AServlet", asyncSupported=true) 
  * resp.setContentType("text/html;charset=utf-8"); 
  * IE如果不能正常输出,这说明响应体大小不足512B,那你需要多输出点废话! 
  * AsyncContext#complete():通知Tomcat我们异步线程已经执行结束了!这让Tomcat才会及时的断开与浏览器的连接!
上传 
 
  * 上传对表单的要求: 
    > method="post" 
    > enctype="multipart/form-data",它的默认值是:application/x-www-form-urlencoded 
    > <input type="file" name="必须给"/> 
 
  * 上传Servlet的使用: 
    > request.getParameter()不能再用 
    > request.getInputStream()使用它来获取整个表单的数据! 
 
  * commons-fileupload 
    > 创建工厂 
    > 解析器 
    > 使用解析器来解析request对象,得到List<FileItem> 
 
  ============== 
 
  Servlet3.0对上传提供了支持: 
  * 表单不变 
  * 在Servlet中不需要再使用commons-fileupload,而是使用Servlet3.0提供的上传组件接口! 
 
  ============== 
 
  上传的步骤: 
  * 使用request.getPart("字段名"),得到Part实例, 
  * Part: 
   > String getContentType():获取上传文件的MIME类型 
   > String getName():获取表单项的名称,不是文件名称 
   > String getHeader(String header):获取指定头的值 
   > long getSize():获取上传文件的大小 
   > InputStream getInputStream():获取上传文件的内容 
   > void write(String fileName):把上传文件保存到指定路径下 
    * 默认Servlet是不支持使用上传组件:需要给Servlet添加一个注解: @MultipartConfig 
 
    它没有提供获取上传文件名称的方法: 
    * 这需要我们自己从Content-Disposition头中截取!
Servlet异步处理和文件上传的更多相关文章
- java/struts/Servlet文件下载与ftp文件上传下载
		
1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!download ...
 - Java基础——Servlet(八)文件上传下载
		
一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...
 - Java Servlet异步处理、非阻塞I/O和文件上传
		
异步处理 应用服务器中的 web容器通常对各个客户端情求分别使用一个服务器线程.在工作负载很繁重的情况下,容器常要大量线程来为所有客户端请求服务.可扩展性限制包括内存用尽,或容器线程池耗尽.为了创建可 ...
 - JSP+Servlet中使用cos.jar进行图片上传(文件上传亦然)
		
链接:JSP+Servlet中使用jspsmartupload.jar进行图片上传下载 关于cos.jar,百度百科只有这么几句话(http://baike.baidu.com/subview/406 ...
 - Servlet实现文件上传,可多文件上传
		
一.Servlet实现文件上传,需要添加第三方提供的jar包 接着把这两个jar包放到 lib文件夹下: 二: 文件上传的表单提交方式必须是POST方式, 编码类型:enctype="mul ...
 - java servlet 3.0文件上传
		
在以前,处理文件上传是一个很痛苦的事情,大都借助于开源的上传组件,诸如commons fileupload等.现在好了,很方便,便捷到比那些组件都方便至极.以前的HTML端上传表单不用改变什么,还是一 ...
 - servlet3.0文件上传与下载
		
描述:文件上传与下载是在JavaEE中常见的功能,实现文件上传与下载的方式有多种,其中文件上传的方式有: (1)commons-fileupload: (2)Servlet 3.0 实现文件上传 (3 ...
 - Servlet3.0学习总结——基于Servlet3.0的文件上传
		
Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...
 - 摘抄--使用cos实现多个文件上传详解
		
在开发中常常需要上传文件,上传文件的方式有很多种,这里有一个cos实现的例子. 首先是要拷贝cos.jar包拷贝到WEB-INF/lib目录下,然后才进行编码. 创建一个可以进行自动重命名的Java文 ...
 
随机推荐
- Visual Studio 要求导入 pfx 密钥以及导入后依然要求导入的解决办法
			
本文为个人博客备份文章,原文地址: http://validvoid.net/visual-studio-pfx-import/ 导入密钥 在使用 Visual Studio 生产项目时,使用 pfx ...
 - 实现多ComboBox复杂查询 使用ComboBoxDisplay Value属性
			
首先创建一个类 class ComboBoxItem { public string Text { get; set; } public object Value { get; set; } //这个 ...
 - SQLSERVER 2012的多维数据库浏览 ,不能多维的显示
			
网上搜索后发现,原来ssms2012不支持这种方式,要使用Excel的方式 参考地址:http://www.flybi.net/question/12567
 - Java中的阻塞队列-ConcurrentLinkedQueue
			
http://ifeve.com/concurrentlinkedqueue/ 1. 引言 在并发编程中我们有时候需要使用线程安全的队列.如果我们要实现一个线程安全的队列有两种实现方式一种是使用 ...
 - centos系统安装mysql
			
方式一. 通过yum install mysql-server安装mysql服务器.chkconfig mysqld on设置开机启动,并service mysqld start启动mysql服务,并 ...
 - bootstrap导航栏的辛酸史
			
昨天本来想完成test10的页面内容的,但是给老铁拉出去打麻将呢.不过还好昨天写了一些内容.现在奉上.不作更改. 今天完成的事情:(实现了test9的响应式导航栏的垂直平分和下拉列表的居中问题.) 我 ...
 - >>我要做特工系列 之 CSS 3_animation_向右滑出后下滑并停止
			
新手入门还没有正式发点啥东西,都是在装潢博客这个家了,到现在为止还是没有装修好..熟悉了这边的发布规范之后会持续在这里记录,给自己留下学习的脚印~ 这正式的第一篇随笔写个使用css3的动画效果. 总感 ...
 - Navicat for MySQL导入文件
			
1.导入SQL文件超出Navicat限制时,需要设置其限制的大小(具体看SQL文件大小) 打开Navicat For MySQL的命令行界面,输入: set global max_allowed_pa ...
 - SonarQube代码质量管理平台介绍与搭建
			
前 言 1.SonarQube的介绍 SonarQube是一个管理代码质量的开放平台. 可以从七个维度检测代码质量(为什么要用SonarQube): (1) 复杂度分布(complexity):代码复 ...
 - php的yii框架开发总结9
			
这一篇讲解怎么实现的自动发邮件的功能,我在网上查了很多资料,很多都是用定时检测来实现的,我试过,效率太低,网站也卡了. 后来就写了一个.bat文件来实现刷新页面,用了windows的定时任务定时来运行 ...