解决response.setHeader设置下载文件名无效的问题
作者:返回主页小南蛮 发布时间:2021-08-15 20:43:54
response.setHeader设置下载文件名无效
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=down.xls");
设置后,点击下载的文件名无效,是方法的名字
解决
将以上的代码放到流的前面即可。
response.setheader无效的原因之一
最近搭建架构的时候,使用了HandlerInterceptorAdapter,
在afterCompletion 或 postHandle中使用了response.setHeader("token", token);
初衷是想在方法执行完成后,把新的jwt令牌返回给调用方。
但是实际返回中获取不到set的值。
原因是
response的header设置,要在缓冲区装入响应内容之前,http的协议是按照响应状态行、各响应头和响应正文的顺序输出的,后写的header就不生效了。所以在preHandle里写header就可以生效了的。
输出缓冲区
1、Servlet程序输出的HTTP消息的响应正文首先被写入到Servlet引擎提供的一个输出缓冲区中,直到输出缓冲区被填满或者Servlet程序已经写入了所有的响应内容,缓冲区中的内容才会被Servlet引擎发送到客户端。
2、使用输出缓冲区后,Servlet引擎就可以将响应状态行、各响应头和响应正文严格按照HTTP消息的位置顺序进行调整后再输出到客户端。
3、如果在提交响应到客户端时,输出缓冲区中已经装入了所有的响应内容,Servlet引擎将计算响应正文部分的大小并自动设置Content-Length头字段。
4、如果在提交响应到客户端时,输出缓冲区中装入的内容只是全部响应内容的一部分, Servlet引擎将使用HTTP 1.1的chunked编码方式(通过设置Transfer-Encoding头字段来指定)传输响应内容。
来源:https://www.cnblogs.com/xiaonanman/p/9075828.html
猜你喜欢
- 前言 红包文化源远流长。从古时的红色纸包,到手
- Mapper:@Mapper@OracleRepositorypublic interface OracleRadiusMapper{@In
- 什么是POM?POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做p
- 修改FeginCilent定义的服务名到指定服务通过覆盖类来修改对应的服务名,这里将所有的FeginClient对应的服务名都修改好。pac
- 简要DecimalFormat 的 pattern 都包含着 正负子 pattern ,例如 “#,##0.00;(#,##0.00)”:/
- springboot配置mysql数据库spring.datasource.url报错spring.datasource.url=jdbc:
- 第一个SpringMvc HelloWorld无启动类springboot才有启动类前端操作访问项目名进入默认主页,显示一个链接点击链接后请
- this总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用。它有三个主要的作用
- makeCertPic.javapackage pic;import java.awt.Color;import java.awt.Font
- 一、Socket是什么Socket 的中文翻译过来就是“套接字”。套接字是什么,我们先来看看它的英文含义:插座。Socket 就像一个电话插
- 问题:写了一个新的dao接口,进行单元测试时提示:Initialization of bean failed; nested excepti
- 参考链接:狂神的Swagger笔记号称世界上最流行的API框架Restful Api 文档在线自动生成器 => API 文档 与API
- 突然心血来潮,想自己做个小程序玩玩,但是怎么把他做成一个exe文件,让大家能够更好的理解和使用呢,百度了一下,说是需要exe4j来生成,但是
- Flyweight定义:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。为什么使用共享模式/享元模式面向对象语言的
- 数组的用处是什么呢?——当你需要将30个数进行大小排列的时候,用数组这样的数据结构存储是个很好的选择,当你是一个班的班主任的时候,每次要记录
- 对象重复是指对象里面的变量的值都相等,并不定是地址。list集合存储的类型是基础类型还比较好办,直接把list集合转换成set集合就会自动去
- 本文实例讲述了Java获得当前时间前指定几个小时具体时间的方法。分享给大家供大家参考,具体如下:package getBeforeHourD
- 一、前言问题阐述:在某一场景下,我们的代码在 Service 实现相同,但却在 Controller 层访问时却希望不同的前缀可以访问。如下
- 题目要求思路一:暴力模拟由于数据范围不算离谱,所以直接遍历解决可行。Javaclass Solution { pu
- 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方