`

servlet3.0 上传文件

    博客分类:
  • jee
 
阅读更多

异步上传

 

import com.google.common.io.Files;

import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.io.PrintWriter;

 
@WebServlet(urlPatterns = "/upload", loadOnStartup = 2, asyncSupported = true)
@MultipartConfig()
public class UploadWordCountServlet extends HttpServlet {

   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if (request.isAsyncSupported()) {
            AsyncContext actx = request.startAsync();
            actx.start(new Task(actx));  
        } else {
            throw new RuntimeException("Do not support asynchronous request");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("<h3>Hello</h3>");
        
        out.println("</body>");
        out.println("</html>");
        out.flush();
    }

    class WordCountTask implements Runnable {
        private AsyncContext context;
        private HttpServletRequest request;
        private HttpServletResponse response;

        public WordCountTask(AsyncContext context) {
            this.context = context;
            this.request = (HttpServletRequest) context.getRequest();
            this.response = (HttpServletResponse) context.getResponse();
        }

        @Override
        public void run() {
            try {
                response.setContentType("application/json;charset=UTF-8");
//                Result all=new Result();
                for (Part part : request.getParts()) {
                    ....
 
                    
                    response.getWriter().write("....");
                }

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                context.complete();
            }
        }
    }

    //part.getSubmittedFileName() 在servlet 3.1中才支持,但是tomcat8才支持3.1规范
    public static String getPartSubmittedFileName(Part part) {
        String cd = part.getHeader("content-disposition");
        if (cd != null) {
            String[] cds = cd.split(";");
            for (String kv : cds) {
                if (kv.trim().startsWith("filename=")) {
                    return kv.split("=")[1].replace("\"", "");
                }
            }
        }
        return "";
    }
}

 

分享到:
评论

相关推荐

    servlet3.0文件上传 01.zip

    本工程用于借助Servlet3.0实现文件上传 本工程编码方式:UTF-8 注意: 1、在上传文件前请在计算机C盘新建一个名为“upload”的文件夹,否则会出现如下异常:java.io.IOException: The temporary upload location [C...

    servlet 3.0 jar 包综合下载

    下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...

    Servlet 3.0新特性——文件上传接口

    4. **流处理**:Servlet 3.0的文件上传接口支持流处理,这意味着文件内容可以直接写入到输出流,而无需先全部加载到内存,这对于处理大文件非常有利。这降低了内存消耗,提高了系统的稳定性和性能。 5. **异步处理*...

    servlet3.0-demo

    在这个名为“servlet3.0-demo”的项目中,我们重点探讨的是如何利用Servlet 3.0的新特性进行文件上传操作,并且采用注解的方式来简化代码。 在Servlet 3.0之前,我们需要在web.xml中配置Servlet,然后通过继承...

    java上传文件(servlet3.0)

    Servlet 3.0是Java EE的一部分,它引入了许多改进,使得文件上传变得更加简单和高效。本篇文章将深入讲解如何使用Servlet 3.0实现文件上传功能。 一、Servlet 3.0新特性 Servlet 3.0标准放宽了对web.xml的依赖,...

    Servlet3.0特性详解

    Servlet3.0是Java EE平台中的一个重要组成部分,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。以下是对Servlet3.0主要特性的详细解释: 1. **注解配置**: 在Servlet3.0中,我们可以...

    servlet3.0 规范pdf 包含javadoc

    这个规范PDF文件是开发人员深入理解Servlet 3.0的核心资源,同时包含的javadoc为开发者提供了API的详细文档,便于在实际开发中查阅和使用。 1. **异步处理**:Servlet 3.0引入了异步处理能力,允许Servlet在请求...

    Servlet3.0学习总结之基于Servlet3.0的文件上传实例

    Servlet3.0文件上传实例学习总结 Servlet3.0提供了对文件上传的原生支持,开发者可以直接使用Servlet3.0提供的API实现文件上传功能,不需要借助任何第三方上传组件。在这里,我们将介绍使用Servlet3.0实现文件上传...

    Servlet3.0 Demo

    Servlet3.0引入了注解配置,允许开发者无需在web.xml文件中进行繁琐的配置,可以直接在Servlet类上使用`@WebServlet`注解来声明和映射Servlet。例如: ```java @WebServlet("/hello") public class ...

    servlet3.0新特性源代码

    * servlet3.0的文件上传 * @date:2012-5-21 *在创建项目的时候首先添加Tomcat7.x的支持,然后把apache-tomcat-7.0.27\conf\web.xml拷贝到项目WEB-INF目录下 *把之前的web.xml覆盖.. 配置留下 &lt;?xml version...

    servlet3.0实现文件上传——demo1.zip

    本工程用于借助Servlet3.0实现文件上传 本工程编码方式:UTF-8 注意: 1、在上传文件前请在计算机C盘新建一个名为“upload”的文件夹,否则会出现如下异常:java.io.IOException: The temporary upload location [C...

    servlet3.0文件上传 02.zip

    本工程用于借助Servlet3.0实现文件上传 本工程编码方式:UTF-8 注意: 1、请不要使用360安全浏览器演示本功能,否则会出现如下异常:java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadBase...

    Servlet3.0新特性

    在这个主题中,我们将深入探讨Servlet3.0的两个核心新特性:文件上传的简化以及Part接口的使用,以及MultiConfig注解在多配置环境中的应用。 首先,让我们关注Servlet3.0对文件上传的支持。在Servlet2.5及以前的...

    Servlet3.0实现文件上传的方法

    Servlet3.0 实现文件上传的方法是通过利用其新特性,包括注解支持和HttpServletRequest对象对文件上传的内置处理,从而简化了以往依赖第三方库如Apache Commons FileUpload的复杂过程。在Servlet 3.0中,我们可以...

    servlet 3.0 规范提案

    - Servlet 3.0引入了对注解的全面支持,允许开发者在类或方法级别声明Servlet、过滤器和监听器,而无需在web.xml配置文件中进行繁琐的配置。例如,可以通过`@WebServlet`、`@WebFilter`和`@WebListener`注解来声明...

    JavaEE 6 Servlet 3.0 中的新特性

    例如,当一个请求触发了一个耗时的任务(如文件上传或数据库查询)时,Servlet 可以将控制权交给容器,让容器在后台继续执行这些操作,同时释放当前线程去处理其他请求。当后台任务完成时,Servlet 可以恢复执行并...

    Servlet3.0新特性解析01

    总结来说,Servlet3.0的新特性带来了更简洁的配置、更高效的异步处理、更灵活的过滤器和监听器注册,以及对文件上传的内置支持。这些改进都极大地推动了Java Web应用的开发效率和性能,使得开发人员能够更加专注于...

    Servlet3.0 新特性之模块化实践

    Servlet 3.0引入了模块化的概念,允许将Web应用拆分为多个独立的模块(或称为Web片段),每个模块都可以打包为自己的WAR文件。通过`WEB-INF/web.xml`配置文件或注解,可以声明模块间的依赖关系,使得应用结构更加...

    servlet-api-3.0.jar包

    7. **MIME多部分解析**:Servlet 3.0引入了`Part`接口,用于处理MIME多部分请求,这在处理上传文件时非常有用。 8. **安全增强**:添加了新的安全相关API,如`HttpServletRequest.isUserInRole()`和`...

    jsf2.0上传组件(servlet3.0)

    在本文中,我们将深入探讨如何使用JavaServer Faces (JSF) 2.0与Servlet 3.0结合实现文件上传功能。JSF是Java平台上的一种Web应用程序开发框架,而Servlet 3.0则是用于处理HTTP请求的核心Java API,两者结合可以提供...

Global site tag (gtag.js) - Google Analytics