SpringMVC表单提交数据后,数据库中的数据中文乱码,通过show variables like "%char%";
查看数据库编码,发现的确是UTF-8,说明数据库没有问题,问题出在服务器上。
通过搜集资料得到了简便的解决方法,在WebInitializer中,重写AbstractAnnotationConfigDispatcherServletInitializer的onStartup方法:
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addFilter("name", new CharacterEncodingFilter("UTF-8", true))
.addMappingForUrlPatterns(null, false, "/*");
}
整个初始化类如下所示:
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConfig.class};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{RootConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addFilter("name", new CharacterEncodingFilter("UTF-8", true))
.addMappingForUrlPatterns(null, false, "/*");
}
}
该方法通过测试,成功决绝中文乱码问题。