我写了这么个代码, 用来测试使用 spring 提供 Json 数据

Controller

package controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import service.json.FileService;@Controller
public class IndexController {@ResponseBody@RequestMapping(value = "index", method = RequestMethod.GET, produces = "text/html; charset=utf-8")public String index(HttpServletRequest request, HttpServletResponse response) {System.out.println("请求内容: " + request.getHeader("Accept"));response.setContentType("text/html); charset=utf-8");return FileService.INSTANCE.getResList();}}

Kotlin 处理逻辑

package service.jsonimport java.io.File
import my.kotlin.getFileSizeobject FileService {fun getResList() : String {val dir = File("C:\\")var list = ""for (f in (dir.listFiles() ?: return "{}")) {list +=  """|   {"$f", "${ if (f.isFile()) "文件" else "目录" }", ${ f.getFileSize() }}|""".trimMargin()}return """|{|$list|}""".trimMargin()}
}fun main() = Unit

请求结果

$ curl http://abc.com:8080/Json/index.html
{{"C:\$Recycle.Bin", "??", 0 Byte}{"C:\AppData", "??", 0 Byte}{"C:\Boot", "??", 4 KB}{"C:\bootmgr", "??", 374.79 KB}{"C:\CYGWIN_SYSLOG.TXT", "??", 876 Byte}{"C:\Documents and Settings", "??", 0 Byte}{"C:\dosh", "??", 0 Byte}{"C:\DownLoadRecord.ini", "??", 19 Byte}{"C:\GHLDR", "??", 265.78 KB}{"C:\hsrv.txt", "??", 0 Byte}{"C:\mypath_config.txt", "??", 2.7 KB}{"C:\my_path_eve_var.txt", "??", 2.8 KB}{"C:\OEMSF", "??", 317.54 KB}{"C:\pagefile.sys", "??", 7.93 GB}{"C:\perflogs", "??", 0 Byte}{"C:\ping.jpg", "??", 1.51 MB}{"C:\Program Files", "??", 8 KB}{"C:\Program Files (x86)", "??", 12 KB}{"C:\ProgramData", "??", 8 KB}{"C:\Sandbox", "??", 0 Byte}{"C:\System Volume Information", "??", 0 Byte}{"C:\Users", "??", 4 KB}{"C:\windmdll", "??", 0 Byte}{"C:\Windows", "??", 48 KB}}  [15:30:56] Administrator@ ~

很明显, response.setContentType("text/html; charset=utf-8");这句代码是没有起到作用的, 在 Github 上我终于找到了问题的原因:

我想知道为什么这会有用?我认为客户有责任发送他们可以接受的contentType。然后消息转换器可以响应它。

设置 Accept 为 utf-8 编码

$ telnet abc.com 8080
GET /Json/index.html HTTP/1.1
Host: abc.com
Accept: text/json;charset=utf-8HTTP/1.1 200
Content-Type: text/json;charset=utf-8
Content-Length: 924
Date: Thu, 05 Sep 2019 07:47:22 GMT{{"C:\$Recycle.Bin", "目录", 0 Byte}{"C:\AppData", "目录", 0 Byte}{"C:\Boot", "目录", 4 KB}{"C:\bootmgr", "文件", 374.79 KB}{"C:\CYGWIN_SYSLOG.TXT", "文件", 876 Byte}{"C:\Documents and Settings", "目录", 0 Byte}{"C:\dosh", "目录", 0 Byte}{"C:\DownLoadRecord.ini", "文件", 19 Byte}{"C:\GHLDR", "文件", 265.78 KB}{"C:\hsrv.txt", "文件", 0 Byte}{"C:\mypath_config.txt", "文件", 2.7 KB}{"C:\my_path_eve_var.txt", "文件", 2.8 KB}{"C:\OEMSF", "文件", 317.54 KB}{"C:\pagefile.sys", "文件", 7.93 GB}{"C:\perflogs", "目录", 0 Byte}{"C:\ping.jpg", "文件", 1.51 MB}{"C:\Program Files", "目录", 8 KB}{"C:\Program Files (x86)", "目录", 12 KB}{"C:\ProgramData", "目录", 8 KB}{"C:\Sandbox", "目录", 0 Byte}{"C:\System Volume Information", "目录", 0 Byte}{"C:\Users", "目录", 4 KB}{"C:\windmdll", "目录", 0 Byte}{"C:\Windows", "目录", 48 KB}}Connection closed by foreign host

设置 Accept 为 bgk 编码

转载于:https://www.cnblogs.com/develon/p/11466548.html

Spring框架 @ResponseBody注解 编码问题: 论设置 Accept 的重要性相关推荐

  1. Spring框架@PostConstruct注解详解

    文章目录 前言 业务背景 通过依赖查找实现 `@PostConstruct`注解实现 @PostConstruct注解原理 `@PostConstruct`注解 `@PostConstruct`注解源 ...

  2. Spring框架最终注解标签注入方法

    使用注解装配bean 使用@Autowired注解 从Spring2.5开始,最有趣的一种装配Spring Bean的方式是使用注解自动装配Bean的属性. Spring默认禁用注解装配,最简单的启用 ...

  3. Spring框架注入注解与拦截器浅谈

    依赖注入注解 1实现注入的注解: (1)修饰属性.方法.构造函数 @Autowire:自动注入,自动去spring容器中寻找指定的bean来注入,require属性指定注入这个bean是否是必须的,如 ...

  4. java spring框架 注解_spring框架之注解的使用

    原标题:spring框架之注解的使用 今天是刘小爱自学Java的第122天. 感谢你的观看,谢谢你. 学习内容安排如下: Spring注解的使用. JavaWeb项目的搭建. Spring的Web集成 ...

  5. spring的各种注解的作用-持续更新中

    所谓的注入到底啥意思? 其实就是spring内部的import 和python里面的import numpy差不多的效果. 依赖注入: 扯白了就是你自己写的对象,需要被spring兼容. 先说说所谓的 ...

  6. 朱晔和你聊Spring系列S1E9:聊聊Spring的那些注解

    本文我们来梳理一下Spring的那些注解,如下图所示,大概从几方面列出了Spring的一些注解: 如果此图看不清楚也没事,请运行下面的代码输出所有的结果. Spring目前的趋势是使用注解结合Java ...

  7. 详解Spring框架的依赖注入

    本篇主要介绍Spring的依赖注入.依赖注入是Spring协调不同Bean实例之间的合作而提供的一种工作机制,在确保Bean实例之间合作的同时,并能保持每个Bean的相对独立性.通过本篇的学习,可以达 ...

  8. 详解 Spring 框架的依赖注入

    本篇主要介绍 Spring 的依赖注入.依赖注入是 Spring 协调不同 Bean 实例之间的合作而提供的一种工作机制,在确保 Bean 实例之间合作的同时,并能保持每个 Bean 的相对独立性.通 ...

  9. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  10. Spring框架学习day_02:组件扫描 / 注解内部读解 / 组件扫描中配置作用域和生命周期 / 解耦 / 自动装配(两种方式) / 读取文件

    1. 组件扫描 首先,必须让Spring扫描组件所在的包,并且,组件类的声明之前必须添加@Component注解! 其实,除了@Component注解以外,还可以使用以下注解实现同样的效果: @Con ...

最新文章

  1. 基于TensorFlow Lite的人声识别在端上的实现
  2. qt中QList使用removeAt()删除元素
  3. BZOJ 1013 球形空间产生器
  4. conda 安装指定版本tensorflow cpu/gpu
  5. 网页设计太麻烦?15款免费优质Bootstrap UI工具包助你效率倍增!
  6. Pannellum:实例之为全景图添加指南针
  7. linux ss命令查看端口监听情况
  8. HTML5+JS调用摄像头
  9. EditPlus中文版64bit百度网盘下载
  10. 关于小米路由器设置无线中继失败的问题
  11. VS code如何下载并配置C语言(详细)
  12. 一个多重阴影的DIV框框
  13. Linux内存管理 - slab分配器和kmalloc
  14. 计算机内存占用过高,如果内存使用率过高怎么办? Win10计算机内存占用率高的原因和解决方案...
  15. 解读大学里的软件工程专业以及其他专业,给高考完的学弟妹一点参考
  16. 离线调用linux命令,GitHub - rinetd/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
  17. iOS 仿百度外卖,饿了么-商品列表页
  18. nginx openresty waf动态黑名单 白名单 、centos 、windows下部署
  19. Sigar获取网卡流量信息
  20. 时光机 (spfa判断负环)

热门文章

  1. 《How to bake LightMap》
  2. POJ3414(BFS+[手写队列])
  3. android中的sqlite注意事项
  4. 《Cocos2d-JS开发之旅》重印在即,感谢大家的支持
  5. gb2312和utf8 转换
  6. Eclipse或SVN—如何在Eclipse中安装SVN客户端插件
  7. Ant—如何Windows操作系统中搭建Apache Ant环境
  8. Critical dependency: require function dependencies cannot be statically extracted
  9. 快捷软件启动工具 Rolan2(转载)
  10. 卸载软件 Geek Uninstaller