下载的文件,不能随便的被访问,放在外面的文件夹肯定不行,url一敲就能访问了,所以我们要放在WEB-INF文件夹里面,WEB-INF文件夹只有Servlet才能访问,我们新建一个文件夹,叫download里面我放了三个文件,一个zip,一个exe,一个png,如图:

我新建了一个JSP

下载文件

下载文件

ColorPix_CHS.zip

QQ9.0.4.exe

小女孩.png

一个Servlet

packagecom.vae.download;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;importjava.net.URLEncoder;importjava.nio.file.Files;importjava.nio.file.Paths;

@WebServlet("/download")public class DownloadServlet extendsHttpServlet {

@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {//1.检查权限,检查积分或者什么什么币,这个不讲//2.获取下载的资源文件的名称,并且进行转码,转码是为了让你的中文文件显示的时候不乱码,但是我不转码也没乱码

String filename = req.getParameter("filename");

filename=new String(filename.getBytes("ISO-8859-1"),"UTF-8");//3.从服务器中获取想下载的文件的绝对路径

String realPath=super.getServletContext().getRealPath("/WEB-INF/download/"+filename);//4.告诉浏览器不要打开文件,直接下载,原因是IE6会直接打开文件,所以这个算是特意为IE6设置的

resp.setContentType("application/x-msdownload");//5.设置下载文件的时候,文件名称应该是文件自己本身的名称,因为默认的下载名称的down

String userAgent=req.getHeader("User-Agent");if (userAgent.contains("MSIE")) {//如果是IE浏览器,是这种编码格式

filename=URLEncoder.encode(filename,"UTF-8");

}else{//非IE浏览器,是这种编码格式

filename=new String(filename.getBytes("UTF-8"),"ISO-8859-1");

}

resp.setHeader("Content-Disposition","attachment;filename="+filename);//6.下载文件

Files.copy(Paths.get(realPath),resp.getOutputStream());

}

}

需要讲解的都在注释里面了

java web下载zip文件_Java Web之下载文件相关推荐

  1. java web 上传附件_JAVA WEB文件上传步骤

    JAVA WEB文件上传步骤如下: 实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中. 1.Web 端上传文件. ...

  2. java web初级面试题_Java Web应用程序初学者教程

    java web初级面试题 Java Web Application is used to create dynamic websites. Java provides support for web ...

  3. java解压zip包_Java中文件的压缩与解压,每天进步一点点系列

    使用java.util.zip包,实现文件的压缩与解压,并提供了下载方法 注意 无论是调用createNewFile()创建文件,还是在创建输出流时由输出流负责创建文件,都必须保证父路径已经存在,否则 ...

  4. java web学什么软件_java web开发是什么?该怎么学习?

    Java中有前端这个开发方向,上回我们说到了javaweb是什么?你们应该对javaweb有了一定的了解了,那你们知道该如何学习web吗?小编这里整理了一些相关知识,快来看看吧. 一.javaweb是 ...

  5. java项目使用过滤器实例_Java web开发--过滤器篇(详细介绍)

    一. web过滤器的介绍 1.过滤器 在生活中,过滤这种我们时常可见:比如水资源的处理,化学药剂的提取等等.所谓过滤,就是指对某事物的处理进行一定的处理获取相应的结果的一个过程.它可以总结为下: 过滤 ...

  6. java解压zip异常_java解压zip文件示例

    若是使用Java自带的压缩工具包来实现解压缩文件到指定文件夹的功能,因为jdk提供的zip只能按UTF-8格式处理,而Windows系统中文件名是以GBK方式编码的,所以如果是解压一个包含中文文件名的 ...

  7. java从url下载文件_Java从URL下载文件

    在这篇文章中将学习如何从java下载URL中的文件.使用java.net.URL openStream()方法从java程序中的URL下载文件.也可以使用Java NIO Channels或Java ...

  8. java目前开发的背景_Java web 开发构想[一] 背景和形势

    [Java web 开发构想系列 转自JavaEye社区,在此申明] 1.背景.形势 能够进行Web开发的编程语言和技术很多 (1) 动态解释语言 PHP; Perl; Python (Zope, P ...

  9. c mysql web开发实例教程_java web 开发入门实例

    学习是个技巧活,关键是要找到重点的地方,新手在这方面的坑尤其多.看别人的教程一步一步的跟着做,隔几步就遇到一个新知识点,忍不住就百度往深处了解,一晃半天就过去了. 有的知识点要深入学习的,有的是了解下 ...

最新文章

  1. 1010 Radix
  2. 数据结构与算法--死磕二叉树
  3. CoreJava 笔记总结-第九章 集合
  4. Atitit.常用语言的常用内部api 以及API兼容性对源码级别可移植的重要性 总结
  5. VMware中的Fedora9下安装VMtool后图形界面无法启动
  6. 下载频道2013上半年超人气精华资源汇总
  7. 淘宝口令生成器,批量生成
  8. 基于java的oa协同办公系统_基于java的OA系统设计 毕业论文.doc
  9. DO-218AB封装,SM8T系列,SM8S系列加强版,汽车级TVS二极管
  10. java中dao_java中的Dao类是什么意思?
  11. Choerodon猪齿鱼实践之集群管理(一)
  12. 12306自动抢票软件代码实现
  13. 逆袭-2014年中电投篮球赛札记_02【转】
  14. 0XU天气上线 从纯粹的网址导航我们正在造纯粹的工具集
  15. selenium防爬无头浏览器和模拟手机浏览器
  16. 伤感日志_茫茫天涯走遍,寂寞心酸
  17. T-Pot安装教程(保证能运行,附安装需要的所有东西清单)
  18. 椭圆机会不会练出肌肉腿
  19. Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the
  20. 花费1800元学习的seo内容公开

热门文章

  1. SQL SERVER EXEC 、SP_EXECUTESQL
  2. js移除html指定id元素,JavaScript按ID删除元素
  3. word打不开doc文档
  4. 前端基础知识与简单模板
  5. 基于springboot2.x+redis的接口防刷(防DOSS攻击)
  6. 2020年集五福攻略:集五福不再难搞
  7. matlab拼音输入,Ubuntu:拼音输入+opencv+matlab 安装
  8. tf12: 判断男声女声
  9. 应用出海,如何使用苹果 CallKit 提升网络通话体验
  10. ValueError: cannot set a row with mismatched columns Pandas报错,超级折磨人