springmvc controller动态设置content-type

摘要:
如果returnvalue=Null,它将由returnvalueHandlers处理,MessageConverter将在内部调用以转换为相应的消息格式。HttpOutputMessageoutputMessage的对应实例是org.springframework。http:。服务器ServletServerHttpResponse。写入数据时,将设置响应标头,包括内容类型。因此,在返回值的情况下,在控制器中设置内容类型无效,将被消息转换器覆盖。

  springmvc  RequestMappingHandlerAdapter#invokeHandlerMethod 通过ServletInvocableHandlerMethod#invokeAndHandle调用目标方法,并处理返回值。

  springmvc controller动态设置content-type第1张

  如果return value != null,则通过returnvalueHandlers处理,内部会调用MessageConverter转换成相应的报文格式。

  springmvc controller动态设置content-type第2张

  HttpOutputMessage outputMessage 对应的实例 是 org.springframework.http.server.ServletServerHttpResponse。
  在写入数据的同时,会设置response的header,包括content-type(根据RequestMapping 的 produces 属性 计算出来)。
  所以,在带有返回值的情况下,在controller中设置content-type是无效的,会被消息转换器覆盖掉。
  
@RequestMapping(value = "xxx", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public String handleKafkaSpecialMessage(HttpServletRequest request, HttpServletResponse response) {
    response.setContentType("application/json");
    return "xxx";
}

  改一下返回值就好了

@RequestMapping(value = "xxx", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public void handleKafkaSpecialMessage(HttpServletRequest request, HttpServletResponse response) {
    response.setContentType("application/json");
    try(OutputStream ros = response.getOutputStream()) {
        IOUtils.write("xxx", ros);
        ros.flush();
    } catch (IOException e) {
    }
}

免责声明:文章转载自《springmvc controller动态设置content-type》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle函数应用与查询聚合统计appsettings.json下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NODE_ENV判断node服务器环境的设置

build->webpack.sit.conf.js 拷贝webpack.prod.conf.js,新建webpack.sit.conf.js、webpack.uait.conf.js,根据环境修改env的引入文件 config->sit.env.js build->bulid.js src -> config文件夹 -&...

MFC位图按钮

下载source VC++ demo project - 43.8 Kb 下载sample demo executable - 25.3 Kb 介绍 CCustomBitmapButton是一个派生自CWnd类的MFC控件。这个按钮有两个部分:一个背景和一个前景。如果WinXP和XP操作系统启用了主题,背景是一个位图加载从当前活跃的主题资源文件(我使用...

Android之OkHttp详解(非原创)

文章大纲 一、OkHttp简介二、OkHttp简单使用三、OkHttp封装四、项目源码下载 一、OkHttp简介 1. 什么是OkHttp   一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理。比如可以使用http客户端与第三方服务(如SSO服务)进行集成,当然还可以爬取网...

Android网络通信库Volley简介

Android网络通信库Volley简介 Posted onMay 27, 2013byliubin 1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google I/O 20...

kaptcha Java验证码

原文:http://www.cnblogs.com/chizizhixin/p/5311619.html 在项目中经常会使用验证码,kaptcha 就一个非常不错的开源框架,分享下自己在项目中的使用: 1、首先下载kaptcha 把kaptcha-2.3.2.jar包放在lib下 2、登陆页面初始化 document.getElementById("myc...

如何创建Node.js Web服务器

Web服务器主流的有Apache, Nginx 和 IIS. 这些我们都不用, 我们用Jave创建一个服务器. 1. 首先安装Java库和NodeJS库, 这些都是开源的库,可以在网上直接下载, 安装, 设置好环境变量就可以了. 2. 写一个Web服务的脚本文件: server.js 1 var http = require('http'); 2 va...