`

servlet下载文件

阅读更多
下载文件的servlet源码

package download;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;

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

public class DownloadFileServlet extends HttpServlet {

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

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

		
		String password = request.getParameter("password");  //取得请求参数,这里只是将密码简单存放在一个数组里
		if((password==null)||!check(password)){
			response.setContentType("text/html;charset=gb2312");  //指定内容类型,并可以显示中文
			PrintWriter out = response.getWriter();  //取得要在响应中输出的文本流,即标准的html
			
			out.println("<html>");
			out.println("<head><title>下载信息</title></head>");
			
			out.println("<body>");
			out.println("<h1 align = 'center'>你输入的注册码不正确</h1><hr>");
			out.println("</body>");
			out.println("</html>");
			
			out.flush();
			out.close();
			
			
		}
		else{
			long totalsize = 0;
			File f = new File("c:/test.pdf"); //取得要传送的文件,实际应用时可以将文件路径以参数的形式传入
			long filelength = f.length();  //文件长度
			byte[] b=new byte[1024];
			FileInputStream fin = new FileInputStream(f);
			DataInputStream in = new DataInputStream(fin);
//			设置响应头信息,让下载的文件显示保存信息
			response.setHeader("Content-disposition", "attachment;filename="+"test.pdf");
			response.setContentType("application/pdf"); //设置输出流的MIME类型,打开pdf格式
			String filesize = Long.toString(filelength);
//			response.setContentLength(filelength);  有什么区别
			response.setHeader("Content-length", filesize); 
			
			ServletOutputStream servletOut = response.getOutputStream();
//			发送文件数据,每次1024字节,最后一次单独计算
			while(totalsize<filelength){
				totalsize+=1024;
				if(totalsize>filelength){ //最后一次传送的字节数
					byte[] leftpart = new byte[1024-(int)(totalsize-filelength)];
					in.readFully(leftpart);
					servletOut.write(leftpart);
				}
				else{
					in.readFully(b); //读1024个字节至字节数组b
					servletOut.write(b);
				}
			}
			servletOut.close();
			
		}
		
		}
//验证注册信息,实际应用中可转换为数据库中验证
	private boolean check(String password) {
		// TODO Auto-generated method stub
		String[] passwords ={"abc","bcd"};
		boolean flag = false;
		for(int i = 0;i<passwords.length;i++){
			if(passwords[i].equals(password)){
				flag = true;
				break;
			}
		}
		return flag;
	}

	public void init() throws ServletException {
		// Put your code here
		super.init();
	}

}

配置文件web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>DownloadFileServlet</servlet-name>
    <servlet-class>download.DownloadFileServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>DownloadFileServlet</servlet-name>
    <!--对应的index.jsp中表单的响应<form method ="POST" action = "DownloadFileServlet">-->

    <url-pattern>/DownloadFileServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


首页
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>文件下载例子</title>

	</head>

	<body>

		<form method="POST" action="DownloadFileServlet">

			<p>
				请输入注册码:
				<input type="text" name="password" size="20">
			</p>

			<p>
				<input type="submit" value="提交" name="B1">
			</p>
		</form>

	</body>
</html>

注册码错误



注册码成功



源码见附件
  • 大小: 39.7 KB
  • 大小: 17.8 KB
分享到:
评论

相关推荐

    答Servlet下载文件的附件

    这篇博客"答Servlet下载文件的附件"可能涉及了如何利用Servlet来实现文件的下载功能,让我们深入探讨这个话题。 首先,我们需要了解Servlet生命周期中的service()方法。当一个HTTP请求到达服务器,Servlet容器(如...

    java jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip

    这个链接会指向一个`servlet`,由`servlet`来处理实际的文件读取和下载逻辑。 1. **创建Servlet**:首先,我们需要创建一个自定义的`servlet`,例如`FileDownloadServlet`。在`src`目录下的Java源代码文件中,我们...

    Servlet 下载文件

    在Servlet中实现文件下载是一项常见的任务,这通常涉及到将服务器上的文件发送到客户端的浏览器,以便用户可以保存到本地。以下是对Servlet下载文件这一主题的详细阐述。 首先,理解Servlet的工作原理至关重要。...

    java servlet实现文件下载

    本示例中,我们将探讨如何使用Java Servlet来实现文件的下载功能。 首先,理解HTTP协议是至关重要的,因为它定义了客户端(浏览器)与服务器之间的通信方式。在文件下载场景中,服务器需要响应一个HTTP请求,该请求...

    用servlet写的文件上传及下载功能带进度条

    自己用servlet写的文件上传及下载功能带进度条 主要用到两个jar:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar 内容介绍: com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 ...

    ajax+json+servlet下载

    结合JSON(JavaScript Object Notation)和Servlet,我们可以实现一个高效且用户友好的文件下载系统。以下是对这个"ajax+json+servlet下载"主题的详细解释。 首先,我们需要理解Ajax的核心原理。Ajax通过...

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    servlet文件下载项目

    在这个"Servlet文件下载项目"中,我们利用Servlet技术来实现文件的下载功能。这是一个非常实用的功能,尤其对于那些需要向用户提供文件下载服务的网站或应用。 首先,我们需要了解Servlet的基本工作原理。Servlet是...

    servlet下载文件实现代码详解(五)

    Servlet 下载文件实现代码详解 在本文中,我们将详细介绍 servlet 下载文件的实现代码,旨在为读者提供一个可靠的参考资源。 Servlet 下载文件的概念 Servlet 下载文件是指将服务器端的文件传输到客户端的过程。...

    基于servlet的文件下载代码

    特别是在企业级应用中,用户经常需要下载诸如报告文档、数据备份等文件。Java Servlet作为一种强大的服务器端技术,可以很好地实现这一功能。本文将详细介绍一个基于Servlet的文件下载代码示例,并对其实现原理进行...

    Servlet中文件上传和下载

    本文将深入探讨如何在Servlet中实现文件的上传和下载功能,以及在页面上利用JSP和Javabean来实例化对象。 首先,文件上传是通过HTTP多部分请求(Multipart Request)来实现的。Servlet 3.0及以上版本提供了对这种...

    servlet上传下载文件

    Servlet技术广泛应用于文件上传和下载的功能实现,因为它们可以方便地与客户端交互并处理数据流。在本例中,我们将深入探讨如何使用Servlet来实现文件上传和下载功能。 首先,让我们了解文件上传的基本流程。当用户...

    servlet实现文件上传下载

    总结来说,实现Servlet文件上传下载需要理解Servlet生命周期、HTTP请求处理、多部分数据解析以及文件I/O操作。Apache Commons FileUpload库简化了这一过程,但理解其背后的原理对于解决可能出现的问题和优化性能至关...

    jsp,servlet上传下载文件

    jsp、servlet 文件上传下载技术详解 文件上传下载是 Web 应用中的一种常见需求,使用 jsp 页面和 servlet 实现文件上传下载是其中的一种解决方案。下面将详细介绍 jsp、servlet 文件上传下载技术。 文件上传下载...

    文件上传与下载servlet

    在IT行业中,文件上传与下载是Web应用中常见的功能,特别是在企业级系统中,例如文档管理系统、在线教育平台等。Servlet作为Java Web开发中的一个重要组件,常被用来处理这些操作。下面将详细介绍如何使用Servlet...

    中文版Servlet帮助文档

    这个中文版的Servlet帮助文档是开发者学习和理解Servlet技术的重要资源。文档详细介绍了Servlet API的使用,涵盖了从基础概念到高级特性的全方位知识。 首先,Servlet是Java EE(现在称为Jakarta EE)的一部分,它...

    基于Servlet实现文件的上传与下载

    "基于Servlet实现文件的上传与下载"是一个常见的实战任务,它涵盖了网络编程、多线程和文件I/O等多个核心概念。这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet...

    【Demo Project】ajaxSubmit+Servlet表单文件上传和下载

    【AjaxSubmit+Servlet实现表单文件上传与下载详解】 在Web开发中,文件上传和下载是常见的功能,尤其是在用户交互丰富的应用中。本项目【Demo Project】利用AjaxSubmit结合Servlet技术,提供了一种高效、异步的方式...

Global site tag (gtag.js) - Google Analytics