@ResponseBody
@RequestMapping(value = "/save")
public String callSomeone() {
return "保存成功";
}
顯示亂碼
設置了CharacterEncodingFilter爲UTF-8,
方法一:
指定RequestMapping的produces屬性
@ResponseBody
@RequestMapping(value = "/save", produces = "text/html;charset=utf-8")
public String callSomeone() {
return "保存成功";
}
方法二:
SpringMVC返回字符串的編碼與StringHttpMessageConverter的DefaultCharset屬性有關
修改StringHttpMessageConverter的DefaultCharset屬性
新建一個工具類 AppUtil實現ApplicationContextAware接口,並監聽ContextRefreshedEvent事件
@Component
public class AppUtil implements ApplicationContextAware, ApplicationListener<ContextRefreshedEvent> {
private ApplicationContext app;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.app = applicationContext;
}
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
try {
RequestMappingHandlerAdapter requestMappingHandlerAdapter = app.getBean(RequestMappingHandlerAdapter.class);
if(requestMappingHandlerAdapter!=null) {
List<HttpMessageConverter<?>> messageConverters = requestMappingHandlerAdapter.getMessageConverters();
if(messageConverters!=null) {
// 獲取bean容器中的StringHttpMessageConverter,並修改DefaultCharset屬性
for(HttpMessageConverter item : messageConverters) {
if(item instanceof StringHttpMessageConverter) {
((StringHttpMessageConverter) item).setDefaultCharset(StandardCharsets.UTF_8);
}
}
}
}
}catch (BeansException e) {
}
}
}
text/html;charset=UTF-8
設置返回json數據的編碼爲UTF-8。