`
beyond429
  • 浏览: 96052 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

下载处理Servlet工具类

    博客分类:
  • java
阅读更多
原文:http://javatar.iteye.com/blog/72265




package com.xxx.servlet;   
  
import java.io.File;   
import java.io.FileInputStream;   
import java.io.IOException;   
import java.io.InputStream;   
import java.io.OutputStream;   
  
import javax.servlet.ServletConfig;   
import javax.servlet.ServletException;   
import javax.servlet.http.HttpServlet;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
  
/**  
* 下载处理Servlet  
* @author liangfei0201@163.com  
*  
*/  
public class DownloadServlet extends HttpServlet {   
  
    private static final long serialVersionUID = 1L;   
       
    private static final String DEFAULT_ENCODING = "UTF-8";   
       
    private static final int DEFAULT_BUFFER_SIZE = 4096;   
       
    private String encoding = DEFAULT_ENCODING;   
       
    private int bufferSize = DEFAULT_BUFFER_SIZE;   
       
    public void init(ServletConfig sc) throws ServletException {   
        super.init(sc);   
  
        String paramEncoding = sc.getInitParameter("encoding");   
        if (paramEncoding != null && paramEncoding.trim().length() > 0) {   
            encoding = paramEncoding.trim();   
        }   
           
        String paramSize = sc.getInitParameter("bufferSize");   
        if (paramSize != null && paramSize.matches("^[0-9]+$")) {   
            bufferSize = Integer.parseInt(paramSize);   
        }   
    }   
  
    public void doGet(HttpServletRequest request, HttpServletResponse response)   
            throws ServletException, IOException {   
        doPost(request, response);   
    }   
  
    public void doPost(HttpServletRequest request, HttpServletResponse response)   
            throws ServletException, IOException {   
        // 查找文件   
        File file = new File(getServletContext().getRealPath("/") + request.getServletPath());   
        if (! file.exists()) {   
            response.sendError(HttpServletResponse.SC_NOT_FOUND);   
            return ;   
        }   
           
        // 设置response   
        response.setContentType("application/x-msdownload; charset=" + encoding);   
        response.addHeader("content-type", "application/x-msdownload;");   
        response.addHeader("content-disposition", "attachment; filename="+ response.encodeURL(file.getName()));   
        response.setContentLength((int)file.length());   
           
        // 输出   
        InputStream in = new FileInputStream(file);   
        OutputStream out = response.getOutputStream();   
        try {   
            int length = 0;   
            byte[] buffer = new byte[bufferSize];   
            while ((length = in.read(buffer)) != -1) {   
                out.write(buffer, 0, length);   
            }   
            out.flush();   
        } finally {   
            if (in != null) {   
                in.close();   
            }   
        }   
    }   
  





<servlet>  
    <servlet-name>download</servlet-name>  
    <servlet-class>com.xxx.servlet.DownloadServlet</servlet-class>  
    <init-param>  
        <param-name>encoding</param-name>  
        <param-value>GBK</param-value>  
    </init-param>  
    <init-param>  
        <param-name>bufferSize</param-name>  
        <param-value>8192</param-value>  
        </init-param>  
    <load-on-startup>4</load-on-startup>  
</servlet>  
<servlet-mapping>  
    <servlet-name>download</servlet-name>  
    <url-pattern>/download/*</url-pattern>  
</servlet-mapping>  
<servlet-mapping>  
    <servlet-name>download</servlet-name>  
    <url-pattern>*.csv</url-pattern>  
</servlet-mapping>  
<servlet-mapping>  
    <servlet-name>download</servlet-name>  
    <url-pattern>*.txt</url-pattern>  
</servlet-mapping>
分享到:
评论

相关推荐

    java servlet上传下载工具类

    总结,"java servlet上传下载工具类"是Java Web开发中一个实用的组件,它封装了复杂的文件操作逻辑,使开发者能更高效、安全地处理文件上传和下载任务。这个工具类基于"孤傲苍狼"的实现,具有较高的稳定性和灵活性,...

    java开发Servlet使用jdbc工具类

    Java开发Servlet时,使用JDBC(Java Database Connectivity)工具类是一种常见的操作,它允许程序员与各种类型的数据库进行交互。在给定的描述中,我们提到的是一个自定义封装的JDBC工具类库,这个库提供了数据库...

    ServletAPI

    总结来说,ServletAPI是Java Web开发的核心,提供了处理HTTP请求的强大工具,结合JSP可以构建出复杂的Web应用程序。通过学习和掌握ServletAPI,开发者可以更好地理解和构建服务器端逻辑,提升Web应用的性能和用户...

    学习了servlet之后,将servlet全部整合在一个工具类中

    在深入探讨这个工具类之前,我们首先需要理解Servlet的基本概念。Servlet是Java编程语言中用于扩展服务器功能的接口,主要用于Web应用程序。它是由Java Servlet API定义的,允许开发者创建动态响应HTTP请求的服务。 ...

    java下载类(servlet)

    在Java Web开发中,Servlet是一种用于扩展服务器功能的Java类,它可以处理来自客户端(通常是浏览器)的请求,并向客户端发送响应。在这个特定的场景中,"java下载类(servlet)"指的是一个使用Servlet技术来实现...

    文件上传下载servlet自用

    在IT行业中,文件上传下载是Web应用中常见的功能,尤其在服务器端编程中,Servlet扮演着重要的角色。Servlet是Java编程语言中用于扩展服务器功能的接口,它可以在接收到HTTP请求后进行处理,并向客户端返回响应。在...

    java文件上传下载工具类

    以下是对"java文件上传下载工具类"这一主题的详细解释。 首先,让我们了解文件上传。在Web应用中,用户可能需要上传文件,如图片、文档或视频。Java通过Servlet API提供了处理文件上传的功能。Servlet 3.0及以上...

    javax.servlet.jar包下载

    导入`javax.servlet.jar`后,确保你的IDE或构建工具已经更新了类路径,这样编译器和运行时环境才能找到所需的类。 5. **Tomcat和Java EE服务器** `javax.servlet.jar`通常是Java EE兼容服务器(如Tomcat、Jetty、...

    servlet文件下载项目

    NetBeans提供了可视化的工具来创建Servlet类,设置部署描述符(`web.xml`),以及进行调试和测试。 在这个项目中,`readme.txt`可能是项目说明文档,详细描述了项目的使用方法、注意事项以及可能遇到的问题。而`...

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    总的来说,BeanUtil工具类是Java Web开发中的实用工具,它简化了Servlet处理表单数据和JavaBean之间数据转换的过程,让代码更简洁、更易于维护。在学习和使用BeanUtil时,还需要了解其潜在的类型转换问题和安全性...

    常用Java工具类

    3. **文件上传工具类**:文件上传是Web应用中的常见功能,Java提供了Servlet API来处理文件上传请求。Apache的Commons FileUpload库提供了一套方便的工具类,可以解析多部分请求,将文件保存到服务器。这类工具类...

    servlet api jar

    总的来说,Servlet API JAR是Java Web开发不可或缺的一部分,它提供了处理HTTP请求的核心工具,使得开发者可以专注于业务逻辑,而不是底层网络通信的复杂性。通过理解和熟练运用Servlet API,可以创建高效、可扩展的...

    servlet api 与servlet src

    通常,Servlet API的源码会包含在像servlet.jar这样的库文件中,开发者可以通过反编译工具查看或下载官方提供的源码包。 在Java EE环境中,Servlet API是通过Web容器(如Tomcat、Jetty等)来支持的。开发者编写实现...

    Servlet 中文乱码解决工具类

    在Java Web程序开发中,由于Web容器内部使用编码格式并不支持中文字符集,所以,处理浏览器请求中的中文数据就会出现乱码的现象。由于Web容器使用了ISO-8859-1的编码格式,所以在Web应用的业务处理中也会使用ISO-...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    - 使用Maven或Gradle等构建工具时,可以在pom.xml或build.gradle文件中添加对应的依赖,这样在构建过程中会自动下载并引入这些库。 5. **Servlet生命周期** - 初始化:当Servlet首次被请求或者在web.xml中配置了`...

    JavaWeb中文件上传最强工具类

    这里我们关注的是一个自定义的Util工具类,它特别针对Excel2007格式进行了优化,同时也兼容其他版本的Excel处理。这个工具类结合了文件上传、JSON解析以及Form表单提交等技术,提供了强大的文件处理能力。 首先,让...

    验证码工具类.zip

    本资源提供了两种实现方式:基于Servlet和Struts2(Action)的验证码工具类。以下是对这两个版本的验证码工具类的详细解释。 ### Servlet版验证码工具类 1. **验证码生成**: Servlet版本的验证码工具类通常会...

    Servlet

    Servlet API提供了许多工具类,如`RequestDispatcher`用于请求转发和重定向,`Cookie`用于管理客户端的持久性数据,`Session`用于跟踪用户会话。 七、Servlet与JSP的配合 Servlet通常用于处理业务逻辑,而JSP则专注...

    servlet-2.5.jar下载

    在没有使用像Maven或Gradle这样的依赖管理工具的情况下,手动下载和管理像`servlet-2.5.jar`这样的库文件是非常常见的做法。 总结来说,"servlet-2.5.jar"是Java Servlet API 2.5版本的实现,它为开发者提供了处理...

    servlet模拟器

    Servlet模拟器是一种工具,它能够帮助开发者理解和测试Servlet程序,而无需实际部署到Web服务器上。在这个场景下,我们主要关注两个关键知识点:servlet的配置与解析,以及XML解析。 首先,让我们深入了解servlet。...

Global site tag (gtag.js) - Google Analytics