一.关于请求中文参数的乱码问题
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; }}