问题遇到的现象和发生背景
SpringMvc框架下,相关依赖:
spring-webmvc 5.2.22.RELEASE
javax.servlet-api 3.1.0
实体类形参接收请求参数,中文的请求参数注入进去就会出现中文乱码问题。
之前用普通的形参接收请求参数解决过中文乱码问题,但是用实体类形参接收又出现了这个问题
问题相关代码,请勿粘贴截图
#实体类代码
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User() {
}
public User(String name, Integer age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
#Controller类
@RequestMapping("/commonParam")
@ResponseBody
public String commonParam(String name,int age){
System.out.println("普通参数name--->" +">" + name);
System.out.println("普通参数age--->" +">" + age);
return "'module':'commonParam'";
}
@RequestMapping("/commonParamDifferentName")
@ResponseBody
//请求参数与方法形参不同名时,请求参数传递给形参
public String commonParamDifferentName(@RequestParam("name")String username, int age){
System.out.println("普通参数name--->" +">" + username);
System.out.println("普通参数age--->" +">" + age);
return "'module':'commonParamDifferentName'";
}
@RequestMapping("/pojoParam")
@ResponseBody
public String pojoParam(User user){
System.out.println("pojo参数user--->" +">" + user); //又出现中文乱码问题
return "'module':'pojoParam'";
}
}
#ServletContainersInitConfig类
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter =new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
return new Filter[]{filter};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringmvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
运行结果及报错内容
点击send结果如下图
我的解答思路和尝试过的方法
我想要达到的结果
有大Lao指导下我吗?