关于response的思考

关于response的思考

我在一个Servlet中都doGet或者doPost方法中,通过response.getOutptStream写入数据,浏览器在获得这个相应数据时,会有如下区别:

    1/我写入的是一个字符串,发现浏览器用这个相应数据渲染了页面,地址栏也跳转了

        http://img1.sycdn.imooc.com//climg/5be51dea0001c38512120441.jpg

http://img1.sycdn.imooc.com//climg/5be51e1500019fed06590229.jpg


2/我写入一个文件,浏览器并不渲染这个页面,地址栏也不跳转,还提供了这个文件的下载

http://img1.sycdn.imooc.com//climg/5be51e57000127f012930633.jpg

http://img1.sycdn.imooc.com//climg/5be51e630001cd3106390414.jpg


按理来说response.getoutputStream返回的都是数据的缓冲流,里面都是0和1构成的数据流,究竟是什么导致了这两种结果的的差别,也就是浏览器是如何识别出这两种方式并做出不同的反应的?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿莹 2018-11-09 19:16:38

1、不一样的,Workbook底层做了很多封装的,如果同学有兴趣,可以找源码看一下。

2、是的,它会自动关闭的。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 楚楚提 #1
    那这个怎么解释: //将数组中的数据写到response的缓冲流当中去 outputStream.write(bytes); //把流中的缓冲数据给输出 outputStream.flush(); outputStream.close(); 这是本节课导出的excel,他可不是workbook直接写的,而是先保存再读取,最后用这种常规的方法写到response当中去的
    2018-11-09 20:36:04
  • 一叶知秋519 回复 提问者 楚楚提 #2
    ​恩,同学的疑问点是为什么要使用workbook么?
    2018-11-11 15:22:17
好帮手慕阿满 2018-11-09 15:20:15

如果输入的是字符串,outputStream.wirte(string.getBytes(charsetName:"utf-8"));这里就是将字符串输出。如果输入的是文件,response.setHeader(s:"Content-Disposition",s1:"attachment;filename=export.xls");这句代码setHeader将Content-Disposition设置为attachment,所以可以以文件的方式下载。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 楚楚提 #1
    你可以试下,不用setheader一样可以下载,只不过文件名是servlet名,而且类型不明确
    2018-11-09 15:39:58
  • 好帮手慕阿莹 回复 提问者 楚楚提 #2
    是workbook.write(outputStream); 这行代码不同。字符串是用outputStream向外写的 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2018-11-09 18:15:39
  • 提问者 楚楚提 回复 好帮手慕阿莹 #3
    嗯,但是workbook.write(outputStream)和outputStream.write()不都是写到<br/>,outputStream缓冲流当中吗?然后再提交到response当中去.<br/> 另外有个问题就是向流中写数据时,是不是他会自动提交,就是说<br/> 正常时outputStream.close()或者flush()他才提交数据,但是我看之前<br/> 课程的代码,就是ajax局部刷新那里,后台交互的Servlet直接写入json数据<br/> 代码是response.getOuputstream.write(jsonOnject.toString.getBytes() 没有close也没有flush
    2018-11-09 18:42:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师