下载文件的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
分享到:
相关推荐
jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip
自己用servlet写的文件上传及下载功能带进度条 主要用到两个jar:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar 内容介绍: com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 ...
java servlet实现文件点击下载。 将资源解压后配置在tomcat中,输入http://localhost:8080/DownLoadFileDemo/即可看到点击下载的链接
基于servlet的文件下载代码基于servlet的文件下载代码基于servlet的文件下载代码基于servlet的文件下载代码基于servlet的文件下载代码基于servlet的文件下载代码基于servlet的文件下载代码基于servlet的文件下载代码...
NULL 博文链接:https://liyaxi.iteye.com/blog/467618
Servlet实现文件上传与下载 Servlet 文件上传与下载
实现流程:获取项目文件夹所有文件,并以列表形式显示在页面上,可选择性下载
servlet下载文件简单代码
Servlet文件下载
java实现jsp+servlet文件下载及批量下载,mvc分层技术
java 写的文件上传下载的例子,可以做简单图片文件服务器
javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档,javaservlet帮助文档
Servlet中文件上传和下载,页面使用jsp里面实例化对象使用Javabean
包含翻译后的API文档:javax.servlet-api-4.0.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:javax.servlet:javax.servlet-api:4.0.0; 标签:javax、servlet、api、中文文档、jar包、java; 使用方法:解压翻译...
servlet api文档 servlet api说明文档servlet api说明文档
Servlet实现文件下载public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{ String str = this.getServletContext().getRealPath("/download/隐形的翅膀 -...
这是一个使用servlet实现下载功能的小例子程序, 是一个完成的项目,使用netbeans开发的. 方便自己,方便别人
使用Servlet实现文件的上传与下载Demo
解压 【javax.servlet-api-***.jar中文文档.zip】,再解压其中的 【javax.servlet-api-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档...