servlet下载文件的原理:
把服务器上的文件以application/octet-stream的响应类型输出到JSP页面。
下载页面download.jsp
<body>
<a href="FileDownloadServlet?filename=jd2chm.exe">二进制文件</a><br>
<a href="FileDownloadServlet?filename=test.txt">文本文件</a><br>
<a href="FileDownloadServlet?filename=文件格式兼容包.exe">中文文件名</a><br>
</body>
Servelt-FileDownloadServlet:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
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 FileDownloadServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException
{
String filename = req.getParameter("filename");
if (null == filename || "".equals(filename))
{
resp.sendRedirect("download_error.jsp");
return;
}
// 下载文件
download(req, resp, filename);
}
@SuppressWarnings("deprecation")
private void download(HttpServletRequest req, HttpServletResponse resp, String filename)
throws ServletException, IOException
{
String filePath = req.getRealPath("/upload/" + filename);
File file = new File(filePath);
//请求文件不存在
if (!file.exists())
{
resp.sendRedirect("download_error.jsp");
return;
}
InputStream is = new BufferedInputStream(new FileInputStream(file));
OutputStream os = new BufferedOutputStream(resp.getOutputStream());
//响应类型
resp.setContentType("application/octet-stream");
//解决下载文件中文乱码
filename = new String(filename.getBytes("utf-8"), "ISO-8859-1");
//保存对话框显示的文件名
resp.addHeader("Content-Disposition", "attachment;filename=" + filename);
//保存对话框显示下载文件的大小
resp.addHeader("Content-Length", "" + file.length());
byte[] buff = new byte[1024];
for (int length = 0; -1 != (length = is.read(buff));)
{
os.write(buff, 0, length);
}
os.close();
is.close();
}
}
server.xml配置:
<servlet>
<servlet-name>FileDownloadServlet</servlet-name>
<servlet-class>FileDownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileDownloadServlet</servlet-name>
<url-pattern>/FileDownloadServlet</url-pattern>
</servlet-mapping>
下载失败页面:download_error.jsp
<body>
<h1>下载失败!</h1>
</body>
分享到:
相关推荐
Java Servlet是一种Java编程语言...通过这个简单的Java Servlet实现,我们可以为用户提供一个安全、可控的文件下载服务。理解这些基本步骤和相关的HTTP概念,将有助于你更好地设计和实现Web应用程序中的文件下载功能。
Servlet实现文件下载public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{ String str = this.getServletContext().getRealPath("/download/隐形的翅膀 -...
JSP+Servlet 实现文件下载 在 Web 应用中,实现文件下载是非常常见的需求。通过 JSP 和 Servlet,可以轻松地实现文件下载功能。下面将对 JSP+Servlet 实现文件下载的知识点进行详细的解释。 Step 1: 配置 web.xml ...
本项目的核心是实现文件下载功能,而不是在浏览器中显示文件内容,尤其针对迅雷这样的第三方下载工具进行优化。下面我们将深入探讨如何使用Java的这些技术来实现这一目标。 首先,`jsp`是Java的一个视图技术,主要...
综上所述,实现“jsp+servlet实现大型文件下载”涉及Servlet和JSP的基本使用,文件流操作,HTTP协议的理解,以及安全性和性能优化等多个知识点。通过理解并掌握这些,你可以构建出高效且安全的文件下载服务。
### Servlet 实现文件下载知识点详解 #### 一、Servlet简介及应用场景 Servlet 是 Java Web 开发中的一个重要组件,它主要用于处理客户端发送至服务器的 HTTP 请求,并返回相应的响应。Servlet 的核心接口是 `...
在这个场景中,"使用Servlet实现文件的下载"是一个常见的需求,特别是在构建动态网站时,用户可能需要下载服务器上的文件。以下是关于如何使用Servlet实现文件下载的详细步骤和知识点: 1. **创建Servlet**:首先,...
本教程将详细讲解如何使用Servlet实现文件下载功能,包括对中文和特殊符号的支持,以及在JSP页面上进行中文下载的处理。 首先,我们需要了解Servlet的基本工作流程。当客户端(浏览器)发起一个HTTP GET或POST请求...
在这个场景中,我们关注的是如何使用Servlet来实现文件的上传和下载功能,同时结合Tomcat服务器和XML文件进行数据存储。以下是关于这些知识点的详细说明: 1. **Servlet**: Servlet是Java EE规范的一部分,它是一...
在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...
通过以上步骤,你可以成功地在CKEditor 3.6.0中集成Servlet实现的文件上传功能。这个过程不仅适用于图片,还可以扩展到其他类型的文件,如文档、音频和视频。注意在实际应用中,根据服务器环境和项目需求进行相应的...
本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...
本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,其中涉及到的主要技术点包括Servlet API、Multipart解析以及文件流操作。 首先,我们需要了解Servlet在文件上传中的作用。Servlet在接收到客户端(通常...
Servlet实现文件下载功能 Servlet实现文件下载功能是指通过Servlet来实现文件的下载功能,主要是将文件存储在服务器端,然后通过Servlet将文件传输给客户端实现下载。下面是Servlet实现文件下载功能的详细知识点: ...
### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...
"基于Servlet实现文件的上传与下载"是一个常见的实战任务,它涵盖了网络编程、多线程和文件I/O等多个核心概念。这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet...
总之,通过Servlet实现多文件批量下载,主要涉及HTTP响应设置、文件流操作以及ZIP压缩技术。这个功能可以帮助用户更高效地下载多个文件,提升用户体验。希望这个示例对你和其他开发者有所帮助,节省寻找解决方案的...
以上就是使用JSP和Servlet实现文件上传下载的基本流程和关键代码。在实际应用中,我们还需要考虑错误处理、安全性(如防止文件覆盖、上传恶意文件等)以及性能优化(如使用缓冲、断点续传等)。在大型项目中,可能还...
总结来说,Servlet实现文件下载的关键在于正确设置HTTP响应头和使用输入/输出流进行文件内容的传输。这个过程涉及到对文件I/O、HTTP协议以及Servlet生命周期的理解。希望这个解释有助于你更好地理解和实现Java Web中...
本教程将详细讲解如何使用Servlet实现文件的上传和下载功能,这对于任何Web应用程序来说都是至关重要的。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中一个用于扩展服务器功能的接口,主要应用...