博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Servlet中的HttpServlet实现下载功能
阅读量:2442 次
发布时间:2019-05-10

本文共 1744 字,大约阅读时间需要 5 分钟。

最近在学习Servlet,用HttpServlet简单的写了一个下载的功能,写得不好的位置大家可以加我微信,私聊我哈,谢谢哈!

public class ServletDemo03 extends HttpServlet {	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		// 通过路径,this.getServletContext().getRealPath得到的是tomcat的安装路径		String path = this.getServletContext().getRealPath("/WEB-INF/classes/qq.jpg");		FileInputStream fi = new FileInputStream(path);		// 创建字节输出流		ServletOutputStream sos = response.getOutputStream();		// 得到要下载文件的文件名		String filename = path.substring(path.lastIndexOf("\\") + 1);		// 告知客户端下载文件		response.setHeader("content-disposition", "attachment;filename=" + filename);		response.setHeader("content-type", "image/jpeg");		// 执行输出操作		int len = 1;		byte[] b = new byte[1024];		while ((len = fi.read(b)) != -1) {			sos.write(b, 0, len);		}		// 在服务器开发中不写关流也没关系,因为服务器会帮你做		sos.close();		fi.close();	}	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {	}}

上面代码的注释已经写得很清楚了,我在给大家总结一下哈

1, 通过路径,this.getServletContext().getRealPath得到的是tomcat的安装路径

// 通过路径,this.getServletContext().getRealPath得到的是tomcat的安装路径		String path = this.getServletContext().getRealPath("/WEB-INF/classes/qq.jpg");		FileInputStream fi = new FileInputStream(path);

2,执行io流操作将,让客户端可以读取到服务器的内容

// 执行输出操作		int len = 1;		byte[] b = new byte[1024];		while ((len = fi.read(b)) != -1) {			sos.write(b, 0, len);		}		// 在服务器开发中不写关流也没关系,因为服务器会帮你做		sos.close();		fi.close();

3,得到要下载文件的文件名,并告知客户端下载文件

// 得到要下载文件的文件名		String filename = path.substring(path.lastIndexOf("\\") + 1);		// 告知客户端下载文件		response.setHeader("content-disposition", "attachment;filename=" + filename);		response.setHeader("content-type", "image/jpeg");

完成以上的步骤就可以实现如图的下载功能了

你可能感兴趣的文章
BigCommerce和Volusion:比较设置和移动
查看>>
使用codeigniter_使用CodeIgniter探索面向方面的编程,第3部分
查看>>
使用codeigniter_使用CodeIgniter探索面向方面的编程,第2部分
查看>>
用Wufoo创建简单表单:开发人员的观点
查看>>
heroku_使用Heroku和Facebook SDK在云中构建您的应用
查看>>
SitePoint播客#145:Addy Osmani的Backbone.js基础
查看>>
Google发布Chrome 4.0
查看>>
将ip保存在txt文档中_将任何文件存储在Google文档中
查看>>
disconf apps_Google Apps Drop IE6支持
查看>>
使用Screenr创建截屏视频
查看>>
微信小程序使用flex布局_使用Flex来启动您PHP应用程序!
查看>>
互联网总线带宽_新技术将使互联网带宽翻倍
查看>>
java自由职业者是什么_一个成功的自由职业者需要什么?
查看>>
paas云平台架构_PaaS:通过Node.js中的RESTful API管理您的云基础架构
查看>>
HTML完整格式–什么是HTML完整格式?
查看>>
java开发持久层_Java与软件开发保持同步以确保持久流行
查看>>
Angular vs React – Angular和React之间的区别
查看>>
有源蜂鸣器驱动程序_Windows 10现在处于8.25亿有源设备上:这对程序员意味着什么
查看>>
oracle认证考试_通过获得Oracle助理认证来提升您的职业-PrepAway进行的1Z0-052考试复习
查看>>
java语言作为入门好吗_Java作为学生的第一语言
查看>>