javaweb文件下载功能实现(代码片段)

longshengguoji longshengguoji     2022-12-14     507

关键词:

需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片

两种实现方法:

    一:通过超链接实现下载

在HTML网页中,通过超链接链接到要下载的文件的地址
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>通过链接下载文件</h1>
<a href="/day06/download/cors.zip">压缩包</a>
<a href="/day06/download/1.png">图片</a>
</body>
</html>

其中day06/download是文档路径,本实例的程序结构如下:
程序运行后,可以通过单击需要下载文档实现下载
但是这里会出现一个问题,就是单击下载压缩包的时候会弹出下载页面,但是下载图片的时候浏览器就直接打开了图片,没有下载。
    这是因为通过超链接下载文件时,如果浏览器可以识别该文件格式,浏览器就会直接打开。只有浏览器不能识别该文件格式的时候,才会实现下载。因此利用第二种方法实现下载功能。

    二:通过Servlet程序实现下载

    通过Servlet下载文件的原理是通过servlet读取目标程序,将资源返回客户端。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>通过链接下载文件</h1>
<a href="/day06/download/cors.zip">压缩包</a>
<a href="/day06/download/1.png">图片</a>
<h1>通过servlet程序下载文件</h1>
<a href="/day06/ServletDownload?filename=cors.zip">压缩包</a>
<a href="/day06/ServletDownload?filename=1.png">图片</a>
</body>
</html>

其中,/day06/ServletDownload 是servlet程序的映射路径 然后新建一个servlet,名称为ServletDownload,URL映射为/ServletDownload
添加代码如下:
package com.lsgjzhuwei.servlet.response;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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

/**
 * Servlet implementation class ServletDownload
 */
@WebServlet(asyncSupported = true, urlPatterns =  "/ServletDownload" )
public class ServletDownload extends HttpServlet 
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletDownload() 
        super();
        // TODO Auto-generated constructor stub
    

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
		// TODO Auto-generated method stub
		
		//获得请求文件名
		String filename = request.getParameter("filename");
		System.out.println(filename);
		
		//设置文件MIME类型
		response.setContentType(getServletContext().getMimeType(filename));
		//设置Content-Disposition
		response.setHeader("Content-Disposition", "attachment;filename="+filename);
		//读取目标文件,通过response将目标文件写到客户端
		//获取目标文件的绝对路径
		String fullFileName = getServletContext().getRealPath("/download/" + filename);
		//System.out.println(fullFileName);
		//读取文件
		InputStream in = new FileInputStream(fullFileName);
		OutputStream out = response.getOutputStream();
		
		//写文件
		int b;
		while((b=in.read())!= -1)
		
			out.write(b);
		
		
		in.close();
		out.close();
	

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
		// TODO Auto-generated method stub
	



重启tomcat服务器,即可实现对压缩包和对图片的下载。

基于javaweb的web资源库项目——注册功能demo(代码片段)

文章目录项目涉及技术项目需求分析概要设计三层架构搭建项目结构三层架构简介后端注册功能实现eclipse配置创建web项目用户表设计与创建数据库和表创建用户实体类控制层(controller)实现业务逻辑层(service)实现... 查看详情

javaweb综合案例(黑马程序员2021年javaweb课程总结,所有功能均实现,包含数据库sql文件)(代码片段)

目录1.案例介绍:2.项目结构:3.BrandMapper接口类4.Brand实体类5.PageBean实体类6.BrandService接口类7.BrandServiceimpl实现类8.SqlSessionFactoryUtils工具类9.BaseServlet10.BrandServlet11.UserServlet(没有写)12.BrandMapper.xml映射文件13.mybatis-co... 查看详情

基于javaweb的web资源库项目——登录功能demo(代码片段)

在上一篇注册功能中已经搭建了整个项目的架构,下面在此架构上快速添加登录功能。文章目录后端登录功能实现控制层(controller)实现业务逻辑层(service)实现数据访问层(dao)实现前端登录功能实现前端注册页... 查看详情

基于javaweb的web资源库项目——登录功能demo(代码片段)

在上一篇注册功能中已经搭建了整个项目的架构,下面在此架构上快速添加登录功能。文章目录后端登录功能实现控制层(controller)实现业务逻辑层(service)实现数据访问层(dao)实现前端登录功能实现前端注册页... 查看详情

全网最详细的javaweb用户管理系统(详细源码讲解)(小白也行)(代码片段)

基于Javaweb的用户管理系统开发(可直接跳到实现步骤)(小白也行)1、业务及其需求分析1、实现以下功能2、使用以下技术2、简单成品展示1、登录功能与简单界面2、页面查询功能3、添加功能4、单个用户删除功能5、... 查看详情

javaweb邮箱激活实现注册功能(代码片段)

前端获取表单数据提交到Servlet$.post("registUserServlet",$(this).serialize(),function(data) //处理服务器响应数据dataif(data.flag==true) //注册成功,跳转成功页面 location.href="register_ok.html";else //注册失败,给errorMsg添... 查看详情

javaweb应用磁盘文件管理(代码片段)

1、文件浏览commons-io-2.4.jar包下的FileAlterationObserver、FileAlterationListenerAdaptor、FileAlterationMonitor,实现文件监听,定期更新文件状态信息。通过FileAlterationObserver获取文件树,实现搜索算法。fileAlterationObserver=newFileAlterationObs 查看详情

javaweb:servlet实现下载与上传功能

本文内容: servlet实现下载功能servlet实现上传功能 首发日期:2018-07-21servlet实现下载功能实现流程1.首先制作一个jsp页面,主要是用来触发下载的。这里可以根据你的想法来做,当然servlet那边就要相应的更改了。我这里... 查看详情

javaweb010——filter(过滤器)(代码片段)

一、Filter(过滤器)简介1、Filter的基本功能是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理的前后实现一些特殊的功能。2、在ServletAPI中定义了三个接口类来供开发人员编写Filter程序:Filter,FilterChain,Filte... 查看详情

javaweb_文件上传/下载篇(代码片段)

文件的上传/下载文件的上传和下载,是非常常见的功能。例如,头像图,就使用了上传;邮箱中也有附件的上传和下载功能;等等。本文主要是基于Servlet程序,通过form标签以及commons-fileupload.jar的API接口... 查看详情

javaweb(实现文件上传)

...文件上传功能解释:当用户在前端网页点击文件上传后,javaWeb的servlet会获得用户所提交的文件并且将文件存放到服务器里。先看servlet端@MultipartConfig将该标注配置到服务器servlet上面,否则会忽略掉文件的内容。并且报错,错误... 查看详情

javaweb之servlet一(代码片段)

...2019.03.27主机环境:MacBookPro Servlet1.Servlet简介Servlet是JavaWeb的三大组件之一,属于动态资源Servlet的功能接受请求数据处理请求:每个Servlet都是唯一的,能处理的请求都是不同的完成响应Servlet需要我们自己编写2.实现Servlet的方... 查看详情

javaweb--复杂邮件发送实现(代码片段)

01:邮件发送原理02:简单邮件发送实现03:复杂邮件发送实现1.复杂邮件发送实现邮件分类:简单邮件:没有除了文字以外的其他所有文件(包括附件和图片、视频等),即纯文本邮件复杂邮件:除了传统的文字信息外,... 查看详情

javaweb实现学生管理系统(代码片段)

JavaWeb实现学生管理系统一、项目介绍二、项目结构三、前期准备1.配置maven环境,在pom.xml配置文件中配置项目所依赖的jar包2.在MySql数据库中,创建登录注册表login和学生信息表student(1)登录注册表login(2࿰... 查看详情

editormd实现markdown编辑器写文章功能(代码片段)

...tclonehttps://github.com/pandao/editor.md.git现在介绍一下怎么引入JavaWeb项目里,可以在Webapp(WebContent)文件夹下面,新建一个plugins的文件夹,然后再新建editormd文件夹,文件夹命名的随意。在官方网站也给出了比较详细的使用说明,因为... 查看详情

javaweb--邮件发送原理(代码片段)

01:邮件发送原理02:简单邮件发送实现03:复杂邮件发送实现1.邮件发送原理要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把... 查看详情

创建一个javaweb项目——servlet验证mysql数据库实现登录(代码片段)

创建一个JavaWEB项目这个项目就是简单的登录页面,验证数据是否与MySQL数据库中信息匹配。项目搭建准备工具1、Tomcattomcat下载地址:https://tomcat.apache.org/。将tomcat下载之后,解压放在磁盘中的一个目录下方。其目录结... 查看详情

文件上传java中使用smartupload工具类实现文件上传功能(代码片段)

...功能了!环境搭建前提是已经搭建好开发环境。创建JavaWEB项目Tomcat服务器安装步骤1.下载工具类:smartupload将其导入到项目的lib目录下2.写一个前端页面,此处是在jsp页面中写了一个form表单,命名为index.jsp <%-- Cr... 查看详情