记一个问题-SpringMVC乱码问题-加了@RequestMapping的请求头编码格式 和 设置了过滤器等 都不行的问题

问题原因

问题原因写了一个响应请求 返回一串中文 乱码:

@RequestMapping(value =  "/hello.form")
@ResponseBody
public String hello(HttpServletResponse response){
        return "hello Spring MVC!我是中文";
}

出现乱码情况
在这里插入图片描述

解决方法

上面这个乱码曾经改过,一个是设置@RequestMapping(value = “/hello.form”, produces = “application/json; charset=utf-8”) 为 utf-8但是并没有作用,然后也设置过过滤器,还配置过Spirng里那个设置字符编码的类然后配置到IOC这种操作,但最后都没有作用。
然后我就懵逼了…

直到我看了看我之前写的SpringMVC配置,在java配置类上有一个@EnableWebMvc启用WebMVC的功能的注解。

@Configuration
@EnableWebMvc //这里如果不开启 设置@RequestMapping中的produces 请求头之类的设置不生效
@ComponentScan("thread")
public class WebConfig {
    //配置Thymeleaf视图解析器
    @Bean
    public ViewResolver viewResolver(TemplateEngine templateEngine){
        ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
        thymeleafViewResolver.setTemplateEngine(templateEngine);
        thymeleafViewResolver.setCharacterEncoding("utf-8");
        return thymeleafViewResolver;
    }

    //配置 视图解析器需要的模板引擎
    @Bean
    public TemplateEngine templateEngine(ITemplateResolver iTemplateResolver){
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(iTemplateResolver);
        return templateEngine;
    }

    //配置模板解析器 在这个类里设置 thymeleaf的 前缀 后缀 编码 是否使用缓存
    @Bean
    public SpringResourceTemplateResolver templateResolver(){
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates");
        templateResolver.setSuffix(".html");
        templateResolver.setCharacterEncoding("utf-8");
        templateResolver.setCacheable(false);
        return templateResolver;
    }
}

@EnableWebMvc 这个注解不设置貌似SpringMVC的请求之类的操作都正常,之前一直都是默认在学的时候加习惯了,然后某一次不加,突然发现@RequestMapping 里的 produces属性会不生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值