一.简单介绍JSP隐含对象response实现文件下载

(1)在JSP中实现文件下载最简单的方法是定义超链接指向目标资源,用户单击超链接后直接下载资源,但直接暴露资源的URL也会带来一些负面的影响,例如容易被其它网站盗链,造成本地服务器下载负载过重。

(2)另外一种下载文件的方法是使用文件输出流实现下载,首先通过response报头告知客户端浏览器,将接收到的信息另存为一个文件,然后用输出流对象给客户端传输文件数据,浏览器接收数据完毕后将数据另存为文件,这种下载方法的优点是服

务器端资源路径的保密性好,并可控制下载的流量以及日志登记等。

二.两种文件的下载方式

(1)二进制文件的下载

用JSP程序下载二进制文件的基本原理是:首先将源文件封装成字节输入流对象,通过该对象读取文件数据,获取response对象的字节输出流对象,通过输出流对象将二进制的字节数据传送给客户端。

1.把源文件封装成字节输入流对象

2.读取二进制字节数据并传输给客户端

代码如下:

int status=0;

byte b[]=new byte[1024];

FileInputStream in=null;

ServletOutputStream out2=null;

try

{

response.setHeader("content-disposition","attachment; filename=d.zip");

in=new FileInputStream("c:\\tomcat\\webapps\\ROOT\\d.zip");

out2=response.getOutputStream();

while(status != -1 )

{

status=in.read(b);

out2.write(b);

}

out2.flush();

}

catch(Exception e)

{

System.out.println(e);

response.sendRedirect("downError.jsp");

}

finally

{

if(in!=null)

in.close();

if(out2 !=null)

out2.close();

}

%>

(2)文本文件下载

文本文件下载时用的是字符流,而不是字节流。首先取得源文件的字符输入流对象,用java.io.FileReader类封装,再把FileReader对象封装为java.io.BufferedReader,以方便从文本文件中一次读取一行。字符输出流直接用JSP的隐含对象out,out能够输出字符数据。

代码如下:

int status=0;

String temp=null;

FileReader in=null;

BufferedReader in2=null;

try

{

response.setHeader("content-disposition","attachment; filename=ee.txt");

response.setCharacterEncoding("gb2312");

in=new FileReader("c:\\tomcat\\webapps\\ROOT\\ee.txt");

in2=new BufferedReader(in);

while((temp=in2.readLine()) != null )

{

out.println(temp);

}

out.close();

}

catch(Exception e)

{

System.out.println(e);

response.sendRedirect("downError.jsp");

}

finally

{

if(in2!=null)

in2.close();

}

%>

希望本文所述对大家学习JSP隐含对象response实现文件下载有所帮助。

Java隐含对象实验报告,JSP隐含对象response实现文件下载相关推荐

  1. java类与对象实验_JAVA类与对象实验报告

    <JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...

  2. 《Java程序设计》实验报告——Java的对象与类

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

  3. java 类与对象实验报告_java类与对象实验报告

    java类与对象实验报告 西 安 邮 电 大 学(计算机学院)课内实验报告实验名称: 类与对象 专业名称: 计算机科学与技术班 级: 计科1405班 学生姓名: 高宏伟 学 号: 04141152指导 ...

  4. 《Java程序设计》实验报告——Java的多线程机制

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

  5. 《Java程序设计》实验报告——Java的接口与继承

    浙江理工大学 <Java程序设计>  实验报告  20 19-20 20学年第 1学期      学  院 信息学院 班  级 计算机科学与技术18(3) 姓  名 申屠志刚 学  号 2 ...

  6. java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc

    java程序设计课程--实验报告-实验13.doc 还剩 12页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: ...

  7. java弹弹球实验报告_Java弹球游戏实验报告—chen

    Java弹球游戏实验报告-chen 课 程 设 计 报 告 题 目 弹球小游戏 姓 名 方成 学 号 20 专 业 java 指导教师 陈华恩 2013年 12 月 30 目录 一.实验目的2 二.需 ...

  8. java模拟洗衣机程序,java洗衣机仿真程序实验报告及代码.doc

    java洗衣机仿真程序实验报告及代码.doc 11.实验题目:用java编写洗衣机仿真程序2.实验目的:1.熟悉并掌握洗衣机(全自动)的工作原理和运行过程.2.学会软件工程设计中的一系列分析研究,对需 ...

  9. java继承机制实验报告_JAVA继承实验报告.doc

    JAVA继承实验报告 JAVA语言程序设计 实验报告 实验一 实验题目: 面 向 对 象 编 程 指导老师: 卢照 专业班级:计算机科学与技术系1106班 姓 名:*****) 2014年3月20日 ...

最新文章

  1. 转载 jsonrpc环境搭建和简单实例
  2. java程序员修炼之道
  3. 百练OJ:2746:约瑟夫问题
  4. 计算机上开发和运行应用程序与操作系统无关,计算机期中测验理论部分和答案-C.doc...
  5. 编辑器js获取浏览器高度和宽度值(转)
  6. LeakCanary——直白的展现Android中的内存泄露
  7. 你必须知道的Docker数据卷
  8. 河流水质指标预测与不确定性分析:机器学习模型的比较研究--文献阅读
  9. c语言fopen_s的用法,fopen和fopen_s用法的比较
  10. 学会判断Web安全网关的性能
  11. 华为Mate 40 Pro+真机现身:外观实锤,价格近万!
  12. 完美解决Python与anaconda之间的冲突问题
  13. 微信生成海报 服务器性能,微信小程序生成清晰海报
  14. 如何在Ubuntu系统下装windows10双系统
  15. 【飞书集成自建应用教程】
  16. 一个简单的页面加载管理类(包含加载中,加载失败,数据为空,加载成功)
  17. 电商 SPU和SKU 的区别
  18. PPT2010设置图片透明度
  19. 【击穿、穿透、雪崩】
  20. jython podcast cool isnt't it?

热门文章

  1. java split空字符_java split函数结尾空字符串被丢弃的问题
  2. ashx中Response.ContentType的常用类型
  3. 禁止访问磁盘的注册表
  4. linux——常用指令
  5. fstream下的读写操作
  6. Linux下查看CPU个数(逻辑个数和物理个数)
  7. Windows7搭建FTP文件
  8. Linux中点号,星号,加号,问号实战
  9. PJ2018T4 对称二叉树 树形结构
  10. Win11系统无法安装GPT分区的解决方法