Spring Mvc 关于请求 / 响应 中文数据乱码的处理方法

一.关于请求中文参数的乱码问题

1.找到 SpringMvcIoc容器类,重写 getServletFilters() 方法;

大概意思是设置了一个字符过滤器,然后将 数据的编码进行转换, 转换成 UTF-8
package com.Spring.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import javax.servlet.Filter;

public class springMvcIoc extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{springConfig.class};
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{springMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        return new Filter[]{characterEncodingFilter};
    }
}

二.Mvc 处理响应中文数据乱码的问题;

只需要在Controller的类中 设置好 @requestMapping 注解的 produces 属性;

produces 属性可以用于设置 响应返回值 类型, 以及设置 响应数据 编码字符集;

所以只需要利用其第二个功能, 就可以实现解决乱码问题;

下面的 produces 属性添加在 controller 类的 @requestMapping 注解上,意思是给此类中所有 Servlet 方法设置 这个produces 属性;

package com.Spring.controller;


import com.Spring.pojo.student;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.Spring.server.studentServer;

import java.util.List;

@RestController
@ResponseBody
@RequestMapping(value="/student",produces = "text/html;charset=utf-8")
public class studentController {
    @Autowired
    private studentServer studentServer;

    @GetMapping
    public List<student> get(){
        List<student> students = this.studentServer.selectAll(null);
        return students;
    }

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值