是什么

下载指的是将服务器端的文件保存到客户端的磁盘中

基本实现原理

根据对应的要下载的文件在服务器端找到对应的文件,然后获取到文件流对象,将流对象发送到客户端,然后客户端通过对返回结果中文件流的解析,将流对象转换成相应的文件保存在客户端的磁盘中,以实现下载效果

实例

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><form action="fileDownloadServlet"  method="post"><input type="hidden" name="fileName" value="ceshixzai.txt">下载文件:下载测试文件<input type="submit" value="下载"></form>
</body>
</html>
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet(name = "FileDownloadServlet", urlPatterns = "/fileDownloadServlet")
public class FileDownloadServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取下载文件名String fileName = request.getParameter("fileName");fileName = URLEncoder.encode(fileName, "UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + fileName);// 设置一个存放下载文件的目录File file = new File("F:" + File.separator + fileName);// 想写通用的方法的话,可以在这里进行文件的遍历查找InputStream input = null;OutputStream output = response.getOutputStream();;if (file.exists()) {input = new FileInputStream(file);if (input != null && input.read() > 0) {byte[] buff = new byte[1024 * 5];int len = 0;while ((len = input.read(buff)) > -1) {output.write(buff, 0, len);}} else {output.write("文件已经失效!".getBytes());}}else{output.write("文件已经失效!".getBytes());}if (input != null) {input.close();}if (output != null) {output.close();}}
}

38、JAVA_WEB开发基础之下载功能相关推荐

  1. 37、JAVA_WEB开发基础之上传功能

    是什么 上传指的是将客户端的文件保存到服务器的磁盘中 基本实现原理 读取客户端的文件信息,将文件信息以流的形式发送到服务器,然后服务器将流中的信息保存到本地,以实现文件的上传 实例 注意:提交的表单类 ...

  2. 36、JAVA_WEB开发基础之监听器

    是什么 顾名思义就是监听器就是监听器,在开发中指的是一种机制,通过这种机制可以对应用中组件的创建.销毁.更改等动作进行监视,根据具体监听信息作出相应的处理 工作原理 就是预先给组件添加一个事件,当这个 ...

  3. 35、JAVA_WEB开发基础之过滤器

    是什么 过滤器javaweb的一个重要组件,一种规范,可以对发送到serlvet的请求进行拦截和响应进行过滤.实际开发中可以使用过滤器来对访问服务器的请求进行过滤,以提高安全性 过滤器的原理 可以配置 ...

  4. 31、JAVA_WEB开发基础之servlet(2)

    使用servlet需要依赖jar包:servlet-api.jar,下边介绍一下关于servlet的一些api Servlet接口 package javax.servlet;import java. ...

  5. 30、JAVA_WEB开发基础之servlet(1)

    servlet是什么 Servlet 是一种独立的 web 开发标准,用来接受.处理.返回浏览器的访问请求,它不应和服务器耦合在一起,servlet和servlet容器之间相互独立又相互依存,自我感觉 ...

  6. 39、JAVA_WEB开发基础之ajax和json

    ajax是什么 首先要知道ajax并不是一种新的技术,而是几种技术的强强联合,全称是Asynchronous Javascript and xml,其精髓在于异步加载资源,因此可以实现局部加载效果(因 ...

  7. 34、JAVA_WEB开发基础之EL表达式和标签

    EL表达式是什么 一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名} 使用方式 取出request范围内的参数:{pageContext.request.username} ...

  8. 33、JAVA_WEB开发基础之会话机制

    会话是什么 一个客户端浏览器与web服务器之间连续发生的一系列请求和响应过程就是会话,这些过程中产生的一系列信息就是会话信息,会话机制就是用于维护这些信息一致性的一种技术.通俗的说就是,一个A账号访问 ...

  9. 32、JAVA_WEB开发基础之jsp

    是什么 是简化servlet的一种技术,将html语句和java代码混合在一个文件中进行编写,只对网页中动态产生的内容用java代码编写,静 态内容仍用html语句编写 运行原理 jsp本质上是一个s ...

最新文章

  1. Python之装饰器
  2. 小论Java类变量的隐私泄露
  3. Beta 冲刺 (5/7)
  4. 【JavaScript】前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js
  5. 算法训练 字符串编辑 java
  6. Vue语法学习第三课——计算属性
  7. C++学习之路 | PTA乙级—— 1020 月饼 (25分)(带注释)(精简)
  8. 安卓mysql插入数据_【11-25求助】关于Android 的SQLite数据库插入数据报错问题
  9. winpe镜像文件iso下载_精品软件:最喜爱的也是最纯净WinPE-微PE工具箱
  10. hadoop-2.6.5安装
  11. 项目1:交换机后台管理程序(待续1……)
  12. 个人作业2--APP案例分析
  13. 简单使用linux感受,linux小白说说用linux的感受
  14. gridview求和
  15. 让数据更安全可用,阿里云存储多项新功能发布
  16. Tableau——其他参考方法
  17. 聊城大学计算机专业在全国排名,聊城大学排名
  18. 《STL》— NYOJ STL练习 习题汇总
  19. 蚁剑软件的配置与应用
  20. ISA防火墙中的防火墙客户身份验证

热门文章

  1. 游戏设计与计算机,RPG游戏设计与实现-数学与计算机系.doc
  2. 机器学习之数据预处理——归一化,标准化
  3. leetcode704二分法:(左闭右闭+左闭右开)
  4. 10-7 3-2-(b)查询由生产厂商B生产的所有产品的型号(model) 和价格(price) (10 分)
  5. 7-21 求前缀表达式的值 (25 分)(思路详解)
  6. [JavaWeb-XML]XML_快捷查询方式(selector选择器,XPath)
  7. [蓝桥杯][基础练习VIP]芯片测试-思维
  8. sqrt()函数的注意事项
  9. ios::sync_with_stdio(false)的作用
  10. 下拉菜单实现树状结构_树形图:复杂层次结构的数据可视化