之前没怎么用过这个,这次项目中用到了,于是总结一下:
应该说主要注意三方面:
1、写一个servlet
2、在web.xml中配置这个servlet
3、页面上调用这个servlet
 
第一:
写一个servlet,当然要继承javax.servlet.http.HttpServlet,重写post或者get方法(看需要),这个servlet的思想就是将要下载的文件写到文件流中去,而这个文件输出流就是HttpServletResponse对象的输出流,如下所示:

public class DownloadServlet extends HttpServlet{
 
 
 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
 {
  try
  {
   String downFilename=request.getParameter("curfile");
   String filepath=request.getParameter("path");
         response.setContentType("text/plain");
         response.setHeader("Location",downFilename);
         response.setHeader("Content-Disposition", "attachment; filename=" + downFilename);
         OutputStream outputStream = response.getOutputStream();
         InputStream inputStream = new FileInputStream(filepath+downFilename);
         byte[] buffer = new byte[1024];
         int i = -1;
         while ((i = inputStream.read(buffer)) != -1) {
          outputStream.write(buffer, 0, i);
         }
         outputStream.flush();
         outputStream.close();
  }catch(FileNotFoundException e1)
  {
   System.out.println("没有找到您要的文件");
  }
  catch(Exception e)
  {
   System.out.println("系统错误,请及时与管理员联系");
  }
     }
 
 
 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
 {
  doPost(request,response);
 }

}

web.xml配置:

<servlet>
  <servlet-name>download</servlet-name>
  <servlet-class>com.dichain.common.tools.DownloadServlet</servlet-class>
 </servlet>

<servlet-mapping>
  <servlet-name>download</servlet-name>   
  <url-pattern>/Download</url-pattern>
 </servlet-mapping>

jsp中调用servlet弹出一个下载对话框:

window.open ('Download?curfile='+curfile+'&path='+path,'newwindow','height=30,width=40,top='+yy+',left='+xx+',toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');

 
 

servlet实现文件下载的更多相关文章

  1. Servlet处理文件下载的编码问题,乱码。

    Servlet处理文件下载的编码问题,乱码. //处理文件名乱码问题 // 获得请求头中的User-Agent String agent = request.getHeader("User- ...

  2. servlet实现文件下载所需步骤及说明

      servlet实现文件下载所需步骤及说明 CreateTime--2017年9月1日15:46:22 Author:Marydon 参考链接:http://blog.sina.com.cn/s/b ...

  3. Servlet 之文件下载

    Servlet 之文件下载 import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; impor ...

  4. 利用Tomcat内置的servlet实现文件下载功能

    起因 最近博客所在的VPS挂了又要重装系统,又要重装各种软件. 以前我也经常更换VPS,每次更换都是各种坑爹事情..比如要下载java.下载tomcat.下载mysql..........以前每次我都 ...

  5. JQuery调用Servlet实现文件下载

    jsp页面上的txt附件,点击后浏览器默认直接打开,结果是乱码. 因为用户上传的txt文件可能是ANSI.Unicode.UTF-8编码的任意一种,上传时后台获取文件内容重写一遍保证浏览器打开正常太过 ...

  6. Jetty + Servlet 实现文件下载

    Jetty非常适合做嵌入式web开发,正如Jetty的口号"Don’t deploy your application in Jetty, deploy Jetty in your appl ...

  7. jsp使用servlet实现文件下载

    1.在index.jsp写入如下代码 <a href="demo2">下载</a> 2.在src中创建ServletDemo2类 public class ...

  8. Servlet (三) 文件下载(只支持英文文件名)

    package cn.sasa.serv; import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...

  9. 通过Servlet设置文件下载

    文件下载 1.获取要下载的文件的绝对路径 但是使用getServletContext().getRealPath()方法在不同的服务器上所获得的实现是不一样的 因为项目被打包入.war文件以后就失去了 ...

随机推荐

  1. js之基本包装类型

    为了便于操作“基本类型值”,JS 提供了 三个 特殊的引用类型:Boolean.Number.String.这些类型和其他引用类型相似,但同时 也具备 与各自基本类型相应的特殊行为. 实际上:每当读取 ...

  2. Daily Scrum6

    今天我们小组开会内容分为以下部分: part 1: Anti-spam and anti-abuse module模块总结: part 2: 部分优化代码的展示于交流: part 3:针对用户积分模块 ...

  3. 用R语言对NIPS会议文档进行聚类分析

    一.用R语言建立文档矩阵 (这里我选用的是R x64 3.2.2) (这里我取的是04年NIPS共计207篇文档做分析,其中文档内容已将开头的作者名和最后的参考文献进行过滤处理) ##1.Data I ...

  4. ubuntu(Eclipse+JDK) 自动安装脚本

    sudo rm -rf jdk1.8.0_40sudo rm -rf /usr/lib/jvm sudo tar -zxvf jdk-8u40-linux-i586.tar.gzsudo mkdir ...

  5. Poj 1904 King's Quest 强连通分量

    题目链接: http://poj.org/problem?id=1904 题意: 有n个王子和n个公主,王子只能娶自己心仪的公主(一个王子可能会有多个心仪的公主),现已给出一个完美匹配,问每个王子都可 ...

  6. Data manipulation primitives in R and Python

    Data manipulation primitives in R and Python Both R and Python are incredibly good tools to manipula ...

  7. C#简单windows服务

    因为做后台比较多,所以经常需要写一些后台服务.一般的流程是先创建一个服务项目,加入代码.然后打包一个安装程序或者直接用dos命令安装服务.下面是详细内容:    1. 创建windows服务项目.  ...

  8. PHP 路径或URL操作

    echo 'documentroot:'.$_SERVER['DOCUMENT_ROOT'].'<br>'; //根目录,在apache的配置文件里定义:httpd.conf 比如:Doc ...

  9. HDU-2604_Queuing

    题目:Problem Description Queues and Priority Queues are data structures which are known to most comput ...

  10. Sqli-labs less 48

    Less-48 本关与less-46的区别在于报错注入不能使用,不进行错误回显,因此其他的方法我们依旧是可以使用的. 可以利用sort=rand(true/false)进行判断. http://127 ...