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[]{"/"};
有大Lao指导下我吗?
get 请求参数中带中文,导致乱码问题,试试设置tomcat的。
如果是springboot项目,在yml配置文件中,设置
server:
tomcat:
uri-encoding: utf-8
如果使用单独的tomcat,设置server.xml中的:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
添加 URIEncoding="UTF-8"