刚到公司,前天给我的第一个小任务,虽然只是做个简单的下载功能。

但一开始还是花了不少时间去理解导师的意思,而且还要用到一些公司的库类,花了一个下午才做好。

大概有三种方法

1.直接用a标签跳转到指定位置的目标文件。  <a href="doc/help.txt" /></a>(文件是位于doc文件夹下help.txt)(不推荐这种方法,而且这跳转会直接打开文件)

2.jsp跳转然后直接在jsp里面写下载功能

<a href="download.jsp" /></a>

在download.jsp中使用字节流的方法提供下载

<%@page language="java" contentType="application/x-msdownload"  pageEncoding="gb2312"%><%
    //关于文件下载时采用文件流输出的方式处理:
    //加上response.reset(),并且所有的%>后面不要换行,包括最后一个

response.reset();//可以加也可以不加
    response.setContentType("application/x-download");
    String filedownload = "想办法找到要提供下载的文件的物理路径+文件名";
    String filedisplay = "给用户提供的下载文件名";
    filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
    response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);

OutputStream outp = null;
    FileInputStream in = null;
    try
    {
        outp = response.getOutputStream();
        in = new FileInputStream(filenamedownload);

byte[] b = new byte[1024];
        int i = 0;

while((i = in.read(b)) > 0)
        {
            outp.write(b, 0, i);
        }
        outp.flush();
    }
    catch(Exception e)
    {
        System.out.println("Error!");
        e.printStackTrace();
    }
    finally
    {
        if(in != null)
        {
            in.close();
            in = null;
        }
        if(outp != null)
        {
            outp.close();
            outp = null;
        }
    }
%>

我觉得这种方法对于网站只有少量下载要求时可以使用

3使用servlet来控制下载

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
<servlet-name>DownloadFile</servlet-name>
<servlet-class>com.suntek.web.servlet.DownloadServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>DownloadFile</servlet-name>
<url-pattern>/downloadfile</url-pattern>
</servlet-mapping>

</web-app>

servlet

package com.suntek.web.servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

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

public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
OutputStream o = response.getOutputStream();
byte b[] = new byte[1024];
// the file to download.
File fileLoad = new File("F:/", "Eula.txt");
// the dialogbox of download file.
response.setHeader("Content-disposition", "attachment;filename="
+ "help.txt");
// set the MIME type.
response.setContentType("text/plain");
// get the file length.
long fileLength = fileLoad.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_Length", length);
// download the file.
FileInputStream in = new FileInputStream(fileLoad);
int n = 0;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
doGet(request, response);
}
}

在此servlet里面使用了硬编码的方式把文件的路径匹配上去,在实际中要实现动态下载,就从路径方面下手,而且注意,文件的后缀名一定要设置成功,也就是

response.setContentType("text/plain");

来设置下载的文件默认用什么软件打开,contenttype网上有列表,可以自己搜索

下一篇应该会写多线程下载跟实现断点下载(刚好做到这个下载功能,就把这块的知识都顺便学学吧)

转载于:https://www.cnblogs.com/mamama/p/4439884.html

简单实现下载功能--jsp,servlet相关推荐

  1. 添加功能---jsp,servlet

    接上篇:>>>列表查询,添加功能---JSP,servlet_笼中鸟-CSDN博客 一.jsp之间的跳转 list.jsp >> <%@ page language ...

  2. 修改记录功能--jsp,servlet

    >>>接上篇:https://blog.csdn.net/hgnuxc_1993/article/details/123108586 一.分析 原理分析: 1.前端jsp页面绑定该条 ...

  3. 基于jsp+servlet+mysql网上蛋糕店

    基于jsp+servlet+mysql网上蛋糕店 一.系统介绍 二.功能展示 1.主页(客户) 2.登陆(客户) 3.我的购物车(客户) 4.我的订单(客户) 5.订单管理(管理员) 6.客户管理(管 ...

  4. bbs jsp mysql_BBS 一个比较简单的用jsp+servlet+mysql做的bbs论坛 Jsp/ 265万源代码下载- www.pudn.com...

    文件名称: BBS下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 1038 KB 上传时间: 2014-11-02 下载次数: 42 提 供 者: 陈生 详细说 ...

  5. jsp+servlet实现简单登录页面功能Demo

    小白新路历程-1 实现功能: 模拟简单登录功能,登录成功跳转新页面,登录失败在原登录界面提示登录失败信息 开发环境: eclipse Tomcat-8.0 预备知识: HTML标签,Servlet相关 ...

  6. [FMG]两个简单的JSP+servlet小程序

    周末啦,最后一天,问了一下妹子,你作业写完了没有,妹子说,木有,我就傻眼了... 好吧,妹子,我来帮你写. 于是乎,把作业ppt下载下来,看了看,还可以,不算难,于是就帮妹子写完了这一个作业.虽然说还 ...

  7. 电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统

    用JSP/Servlet开发简单的用户注册系统 2.4界面编程实现 通过JavaBeans封装了大部分的逻辑或数据操作功能.这样,JSP页面中就可以减少很多Java代码,从而使得JSP的建立和修改变得 ...

  8. c语言 上传图片至服务器,JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao.service.servlet 这 ...

  9. servlet+javabean+jdbc+mysql基于MVC模式的课件管理系统,有三个表的增删改查和课件搜索、课件上传、课件下载功能, 具体功能请看界面上的导航条

    源码支持在idea.eclipse.myeclipse运行,数据库采用MySQL数据库,项目采用mvc设计模式开发,页面采用jsp+html+css+js完成. servlet+javabean+jd ...

  10. 用JSP/Servlet应用开发一个简单的考试报名系统

    用JSP/Servlet实现一个简单的考试报名系统 背景 一.任务/要求 二.对项目需求进行简要的建模概括分析. 2.项目实现. 2.1项目结构. 2.1.1层次结构 2.1.1数据表结构. 2.2项 ...

最新文章

  1. 安装eAccelerator
  2. AD5933不同频率下的转换结果
  3. 关于在linux python源文件头部添加 “#!/usr/bin/env python” 不能直接运行的问题
  4. POJ 1321 棋盘问题(DFS 状压DP)
  5. mysql 添加外键时 error 150 问题总汇
  6. mysql数据意外删了怎么办_MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办...
  7. 7号团队-团队任务3:每日例会(2018-11-29)
  8. Tomcat启动Name or service not known错误解决
  9. 我所认识的JavaScript正则表达式
  10. 让AI学习如何玩游戏 OpenAI打造强化学习通用模型
  11. 一段TCP socket和WebSocket互相交互的调试代码
  12. C语言丨线性表(四):循环链表
  13. 三层交换机启用OSPF后,如何实现数据转发路径
  14. Unity3d资源管理模块
  15. 微型计算机8字节,八位字节是什么意思
  16. C# 常用命名空间说明
  17. 分享Three.js 泛光(眩光)效果实现
  18. 网站的权重怎么计算以及网站降权的分析处理方法
  19. pc控制android源码,pc 通过vnc控制android
  20. Word2Vec-VS-fastText

热门文章

  1. 想做视频号,先纠正一点
  2. 怎么有效提高执行力?
  3. Pixel 值得购买么?
  4. AndroidDeveloper 读者专属福利
  5. jquery,6位密码输入框效果
  6. pt-table-checksum
  7. 解决C#中ListView闪烁的办法
  8. [转贴]一个农村高考落榜生的心路历程
  9. 顶点计划:辅导员与学生关系讨论
  10. P2420 让我们异或吧 (树链剖分,异或前缀和)