当我们在java中有response.setContentType时,response.addHeader的用途是什么

时间:2013-07-30 08:12:26

标签: java jsp java-ee servlets response

当我们在java中已经有response.setContentType时,我是否知道使用response.addHeader ... 我找不到合适的解决方案。

<% response.addHeader("Content-Disposition","attachment;filename=Report.xls"); %>

<% response.setContentType("application/vnd.ms-excel"); %>

这里上面的第二个语句足以将响应作为excel格式。 哪个场景我需要使用response.addHeader?

请...

2 个答案:

答案 0 :(得分:6)

这个特殊标题:

"Content-Disposition","attachment;filename=Report.xls"

告诉浏览器将文件下载为默认名称为Report.xls的附件。

同时检查HTTP/1.1 specs

  

Content-Disposition response-header字段已被提议为      表示如果用户,原始服务器建议默认文件名      请求将内容保存到文件中。

     

一个例子是

    Content-Disposition: attachment; filename="fname.ext"
  

接收用户代理不应该尊重任何目录路径      filename-parm参数中存在的信息,这是唯一的      目前认为适用于HTTP实现的参数。该      filename应该只被视为终端组件。

     

如果在使用application / octet-的响应中使用此标头 -      流内容类型,隐含的建议是用户代理      不应该显示响应,而是直接输入“保存响应”      作为...'对话。

请记住,HTTP / 1.1定义 Content-Disposition 响应标头字段,但指出它不是HTTP / 1.1标准的一部分。


恕我直言,不要使用JSP来下载东西,而是使用Servlet!

答案 1 :(得分:0)

我不是用Java编写的,但我知道有许多共享相同的功能。

IMO只是一条捷径。

顺便说一句,有这么多标题......不只是Content-Type或类似的东西。