`

基于servlet的文件下载

    博客分类:
  • java
阅读更多
package com.future.zfs.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class FileDownLoadServlet extends HttpServlet{
    
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String path=request.getParameter("filename");
        path=new String(path.getBytes("ISO-8859-1"),"utf-8");
        download(path,request,response);
    }
    
    @SuppressWarnings("deprecation")
    public HttpServletResponse download(String path,HttpServletRequest request, HttpServletResponse response) {
        try {
            // path是指欲下载的文件的路径。
            File file = new File(request.getRealPath("/")+"/"+path);
            // 取得文件名。
            String filename = file.getName();
            // 取得文件的后缀名。
            //String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();

            // 以流的形式下载文件。
            InputStream fis = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8"),"ISO-8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return response;
    }
}

 web.xml

<servlet>
        <servlet-name>fileDownLoadServlet</servlet-name>
        <servlet-class>com.future.zfs.util.FileDownLoadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>fileDownLoadServlet</servlet-name>
        <url-pattern>/fileDownLoadServlet</url-pattern>
    </servlet-mapping>

 

 

<href="fileDownLoadServlet?filename=通讯录.xls">测试文件下载</a>

分享到:
评论

相关推荐

    基于servlet的文件下载代码

    ### 基于Servlet的文件下载技术解析 #### 一、引言 在Web应用程序开发过程中,文件上传和下载是常见的需求之一。特别是在企业级应用中,用户经常需要下载诸如报告文档、数据备份等文件。Java Servlet作为一种强大...

    基于Servlet的购物系统

    在构建基于Servlet的购物系统时,我们主要关注的是如何利用Servlet技术来实现一个功能完备、交互性强的在线购物平台。Servlet是一种Java编程语言中的技术,主要用于扩展服务器的功能,特别是在Web应用开发中,它扮演...

    基于servlet的文件上传

    本示例基于Servlet和Apache Commons FileUpload库实现了一个简单的文件上传系统。下面将详细介绍这个过程及其涉及到的关键知识点。 首先,`servlet`是Java EE(企业版)的一部分,它是一种用于扩展Web服务器功能的...

    基于Servlet实现文件的上传与下载

    "基于Servlet实现文件的上传与下载"是一个常见的实战任务,它涵盖了网络编程、多线程和文件I/O等多个核心概念。这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet...

    基于servlet开发的项目

    本项目是基于Servlet技术开发的,旨在帮助开发者深入理解Servlet的开发流程,同时也包括了Oracle数据库的相关脚本文件,方便在实际环境中进行数据存储。 一、Servlet基础 Servlet是一个Java类,它响应来自Web客户端...

    基于servlet 的考勤管理系统

    【基于Servlet的考勤管理系统】是一个适合初学者的JavaWeb项目,它主要利用Servlet技术来实现员工的考勤管理功能。在JavaWeb开发中,Servlet是服务器端的Java应用程序,用于处理HTTP请求并生成响应。这个项目的实践...

    基于Servlet发送、接收SOAP消息的java源程序

    【标题】基于Servlet发送、接收SOAP消息的Java源程序 在Web服务开发中,SOAP(简单对象访问协议)是一种常见的消息传输协议,用于在不同系统间交换结构化和类型化的信息。Servlet作为Java Web应用程序的核心组件,...

    基于servlet上传下载

    综上所述,基于Servlet实现文件上传下载功能,结合Apache Commons IO和Commons FileUpload库,可以简化开发流程,同时需要注意安全性及性能优化。在实际项目中,可以根据具体需求进行相应的调整和扩展。

    基于jsp+servlet的博客

    【基于jsp+servlet的博客系统】是一个典型的Web应用程序,它结合了JavaServer Pages(JSP)和Servlet技术,用于构建动态、交互式的博客平台。在这个系统中,JSP主要用于展示用户界面,而Servlet则承担了业务逻辑处理...

    基于servlet的过滤器

    在这个小型的基于Servlet的过滤器项目中,我们主要关注如何利用过滤器来实现对网站访问用户的计数功能。这个功能在很多网站统计分析中都非常常见,可以帮助我们了解网站的流量情况。 首先,我们要理解Servlet过滤器...

    基于servlet开发的学生信息管理系统

    【基于Servlet开发的学生信息管理系统】 在信息技术领域,Servlet是一种用于扩展服务器功能的Java技术,它为Web应用程序提供了标准的接口。本系统“基于Servlet开发的学生信息管理系统”是使用Servlet技术来构建的...

    基于servlet 小型用户管理系统

    在IT领域,构建一个基于Servlet的小型用户管理系统是一项常见的任务,尤其对于初学者而言,它提供了理解Web应用程序开发的基础。Servlet是一种Java技术,用于扩展服务器的功能,处理HTTP请求并生成响应。在这个用户...

    基于servlet+jsp+mysql实现的javaweb校园车辆管理系统源码+数据库文件.zip

    基于servlet+jsp+mysql实现的javaweb校园车辆管理系统源码+数据库文件.zip 内含演示视频,代码完整下载可用。 基于servlet+jsp+mysql实现的javaweb校园车辆管理系统源码+数据库文件.zip 内含演示视频,代码完整...

    基于servlet的学生管理系统

    【基于Servlet的学生管理系统】是一种基于Java Web技术的后端应用程序,用于高效地管理和查询学生信息。Servlet是Java编程语言中的一个接口,它扩展了Web服务器的功能,允许开发人员创建动态、交互式的Web应用。在本...

    基于servlet/jsp的学生信息录入查询系统

    【基于Servlet/JSP的学生信息录入查询系统】 这个项目是一个典型的Web应用程序,主要目的是帮助初学者理解和实践Servlet和JSP在构建动态网站时的作用。Servlet是Java服务器端编程的基础,而JSP则是为了简化HTML和...

    基于Servlet+JSP实现的超市订单管理系统源码+项目说明+数据库sql文件.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和...基于Servlet+JSP实现的超市订单管理系统源码+项目说明+数据库sql文件.zip

    基于servlet的网上商城系统源码

    总结来说,"基于Servlet的网上商城系统源码"是一个综合运用多种Java Web技术的实战项目,它涵盖了前端展示、后端处理、数据库操作等多个环节,对于学习和掌握Web开发技术具有很高的价值。同时,由于其具备二次开发的...

    基于servlet文件上传步骤(前台jsp 后台 servlet)

    本篇文章将详细讲解如何基于Servlet实现文件上传,并介绍使用Apache Commons FileUpload组件来优化上传过程。 首先,我们来看一下最简单的文件上传方法。在JSP页面中,创建一个表单,设置`enctype`属性为`multipart...

    java毕设课设基于Web基于servlet的网上商城在线购物系统源码+sql数据库文件

    基于Servlet的网上商城在线购物系统的基本功能描述,包括项目源码和数据库SQL文件。 该在线购物系统主要包含以下功能模块: 用户注册与登录: 用户注册:用户可以填写个人信息进行账号注册。 用户登录:注册用户...

    基于Servlet的电子商城购物网站

    **基于Servlet的电子商城购物网站**是一个典型的Java Web应用程序,主要使用Servlet技术来构建后端服务器逻辑,为用户提供在线购物的交互体验。对于初学者来说,这是一个很好的实践项目,可以帮助他们深入理解Java ...

Global site tag (gtag.js) - Google Analytics