在SpringMVC框架(含SpringBoot框架)中,当处理请求的方法之前添加了@ResponseBody
后,或在控制器类之前使用的是@RestController
,处理请求的方法的返回值将作为响应到客户端的数据。
当服务器向客户端响应数据时,SpringMVC框架会使用“转换器”(Converter)将方法的返回值进行转换,及处理响应时的响应头(Response Headers)等内容,针对返回值类型不同,SpringMVC框架还会自动使用不同的转换器。
当响应数据的类型(处理请求的方法的返回值类型)是String
时,会自动使用StringHttpMessageConverter
转换器,该转换器就会自动将返回的字符串作为数据响应到客户端,并且,还会设置响应头,默认情况下,在响应头中会设置Content-Type
属性,其值是text/html; charset=ISO-8859-1
,所以,在SpringMVC框架(不含SpringBoot框架)中,默认情况下,响应的String
是不支持中文的!
当响应数据的类型是SpringMVC框架默认并不识别的类型时,且当前开发环境添加了jackson-databind
依赖,SpringMVC框架会自动使用jackson-databind
中的转换器,而jackson-databind
中的转换器的工作方式就是将响应结果组织成JSON格式的数据,并且,将响应头中的Content-Type
设置成了application/json; charset=UTF-8
!
在项目中只需要确保添加了
jackson-databind
依赖即可,并不需要进行额外的配置,也不需要显式的使用到该框架中的某个类!如果是使用XML进行相关配置的SpringMVC项目,需要在Spring的配置文件中开启注解驱动,即在配置文件中添加:
<annotation-driven />
总的来说,如果需要SpringMVC框架能够响应JSON格式的数据,需要:
@RestController
或@ResponseBody
注解;jackson-databind
依赖;当然,某个控制器类中,如果已经使用了@RestController
注解,会表示“当前控制器类中处理的所有请求都将响应数据”,就不会执行转发或重定向的操作了,如果一定要执行转发或重定向,可以:
@RestController
注解,而是在每个需要响应数据的方法之前逐一添加@ResponseBody
注解;@RestController
的情况下,将需要转发或重定向的方法的返回值类型声明为ModelAndView
类型。联系客服