人言否 2020-12-06 10:02 采纳率: 0%
浏览 27

求个人帮我解决下疑惑,为什么我web.xml加了过滤 SpringMVC框架底层不走过滤

Object返回值 过滤器设置了UTF8 返回对象会设置为utf-8 但返回String类型时会乱码 需要在注解处设置

produces = "text/plain;charset=utf-8"这是为什么
  • 写回答

1条回答 默认 最新

  • 臭小子帅 2023-04-19 14:05
    关注

    在 SpringMVC 中,框架底层会自动添加一个 CharacterEncodingFilter 过滤器来处理编码问题,如果你在 web.xml 中自定义了一个编码过滤器,那么就会导致两个过滤器同时起作用,从而导致一些问题。为了避免这种问题,你可以在自定义的编码过滤器中设置 dispatcherTypes 为 FORWARD 和 REQUEST,这样就只会对请求进行过滤,而不会对转发进行过滤,从而避免了框架底层的编码过滤器和自定义的编码过滤器同时起作用的问题。

    至于 Object 返回值过滤器设置了 UTF-8 返回对象会设置为 UTF-8,但返回 String 类型时会乱码的问题,是因为 String 类型的数据需要设置响应的 Content-Type 和编码格式,否则浏览器无法正确解析返回的字符串。因此,需要在注解处设置 produces = "text/plain;charset=utf-8" 来指定响应的 Content-Type 和编码格式为 UTF-8,这样就可以避免返回的字符串出现乱码问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型