springmvc下载文件

	@RequestMapping("/testResponseEntity")
	public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{
		byte [] body = null;
		ServletContext servletContext = session.getServletContext();
		InputStream in = servletContext.getResourceAsStream("/files/abc.txt");
		body = new byte[in.available()];
		in.read(body);
		
		HttpHeaders headers = new HttpHeaders();
		headers.add("Content-Disposition", "attachment;filename=abc.txt");
		
		HttpStatus statusCode = HttpStatus.OK;
		
		ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(body, headers, statusCode);
		return response;
	}

示例代码中,返回值为ResponseEntity<byte[]>类型时,springmvc使用ByteArrayHttpMessageConverter对返回值进行转换。

springmvc使用MessageCoverter对请求和响应进行转换,在使用RequestEntity、ResponseEntity、@RequestBody和@ResponseBody时,就会影响MessageConverter的选用。

在返回json时,需要使用MappingJackson2HttpMessageConverter,但是spring4.4中需要我们手动配置这个converter,才会加载。

	<mvc:annotation-driven>
		<mvc:message-converters>
			<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
		</mvc:message-converters>
	</mvc:annotation-driven>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JavaEdge

Spring Security权限框架理论与实战(四)-权限缓存1 CachingUserDetailsService

Spring Security提供了一个实现了可以缓存UserDetails的UserDetailsService实现类,CachingUserDetai...

1452
来自专栏JavaEdge

Spring Http源码

/* Copyright 2002-2017 the original author or authors. Licensed under the Apac...

3255
来自专栏小尘哥的专栏

springboot+jjwt+security完美解决restful接口无状态鉴权

springboot本身已经提供了很好的spring security的支持,我们只需要实现(或者重写)一部分接口来实现我们的个性化设置即可。本文浅显易懂,没有...

5254
来自专栏Spring相关

SpringSecurity自定义用户登录

根据上一节的配置,默认在服务开启的时候会被要求自动的进行表单登陆。用到的用户名只能是一个固定的用户名user,它的密码是每次启动的时候服务器自动生成的。最常见的...

6203
来自专栏一个会写诗的程序员的博客

【Kotlin Spring Boot 服务端开发: 问题集锦】Spring Security 5 : There is no PasswordEncoder mapped for the id "

【Kotlin Spring Boot 服务端开发: 问题集锦】Spring Security 5 : There is no PasswordEncoder...

801
来自专栏JadePeng的技术博客

spring security实现动态配置url权限的两种方法

标准的RABC, 权限需要支持动态配置,spring security默认是在代码里约定好权限,真实的业务场景通常需要可以支持动态配置角色访问权限,即在运行时去...

2800
来自专栏一个会写诗的程序员的博客

页面获取Spring Security登录用户

spring security 把SPRING_SECURITY_CONTEXT 放入了session 没有直接把username 放进去。下面一段代码主要描述...

723
来自专栏个人分享

单点登录filter根据redis中的key判断是否退出

其实可以直接用userSession 但由于项目已经封装了,所以再创建个UserMessage实体类,在登录后将token存入session,当从redis中通...

1553
来自专栏码匠的流水账

聊聊spring security的role hierarchy

默认情况下,userDetailsService建立的用户,他们的权限是没有继承关系的

1411
来自专栏码匠的流水账

spring security自定义指南

AuthenticationManager接口有个实现ProviderManager相当于一个provider chain,它里头有个List provider...

2521

扫码关注云+社区