java文件配置Spring设置StringHttpMessageConverter
2016-10-27 11:18
246 查看
圈内规矩,转载请注明出处,起码标个CSDN,虽然可能没人转
前言:总是看csdn的文章,吃水不忘挖井人。有的问题csdn上面找不到,加上很多人博客互相转发,百度一搜全是一样的,根本解决不了问题。唉,圈子好乱….
第一次写博客,写的很乱,想看结论直接翻到最下面就好了
这几天遇到一个问题就是@ResponseBody返回字符串时,字符乱码。因为我已经配置了一个全局过滤器设置了utf-8的编码,问题应该在spring转换的问题上。然后上百度一搜,发现是要设置StringHttpMessageConverter,这货默认编码是iso-8859-1,并不是utf-8。网上找资料发现都是xml配置注解的解决方案,就像下面这样
但是这个是xml配置的写法,我是用java文件配置spring的啊。于是我想当然new了一个bean,就像下面这样
启动发现并没有什么用,打印日志后发现spring用的bean不是我new的那个bean。
偶然在stackoverflow上面看到这样一句话
原来如此,@EnableWebMvc就想当于
另附我的DispatcherServlet的写法
前言:总是看csdn的文章,吃水不忘挖井人。有的问题csdn上面找不到,加上很多人博客互相转发,百度一搜全是一样的,根本解决不了问题。唉,圈子好乱….
第一次写博客,写的很乱,想看结论直接翻到最下面就好了
这几天遇到一个问题就是@ResponseBody返回字符串时,字符乱码。因为我已经配置了一个全局过滤器设置了utf-8的编码,问题应该在spring转换的问题上。然后上百度一搜,发现是要设置StringHttpMessageConverter,这货默认编码是iso-8859-1,并不是utf-8。网上找资料发现都是xml配置注解的解决方案,就像下面这样
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
但是这个是xml配置的写法,我是用java文件配置spring的啊。于是我想当然new了一个bean,就像下面这样
@Bean public StringHttpMessageConverter StringHttpMessageConverter(){ return new StringHttpMessageConverter(Charset.forName("utf-8")); }
启动发现并没有什么用,打印日志后发现spring用的bean不是我new的那个bean。
偶然在stackoverflow上面看到这样一句话
<mvc:annotation-driven /> is also @EnableWebMvc <tx:annotation-driven /> is @EnableTransactionManagement. <context:component-scan /> is @ComponentScan
原来如此,@EnableWebMvc就想当于
<mvc:annotation-driven />,于是去看了一下WebMvcConfigurerAdapter的源码,发现有一个configureMessageConverters的方法可以配置。于是重写这个方法,设置编码为utf-8。启动服务器一切正常。源码如下:
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Bean public ViewResolver getViewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/"); viewResolver.setSuffix(".jsp"); viewResolver.setExposeContextBeansAsAttributes(true); return viewResolver; } @Bean public MultipartResolver multipartResolver() { return new StandardServletMultipartResolver(); } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } //设置StringHttpMessageConverter @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { StringHttpMessageConverter shm = new StringHttpMessageConverter(Charset.forName("utf-8")); converters.add(shm); } }
另附我的DispatcherServlet的写法
public class DispatcherServlet extends AbstractAnnotationConfigDispatcherServletInitializer{ @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[]{RootConfig.class}; } @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[]{WebConfig.class}; } @Override protected String[] getServletMappings() { return new String[]{"/"}; } @Override protected void customizeRegistration(Dynamic registration) { MultipartConfigElement mConfig = new MultipartConfigElement("D:/ojFile", 524288, 6291456, 0);//TODO,上传路径需要修改 registration.setMultipartConfig(mConfig); } }
相关文章推荐
- spring基于xml格式的前后端数据交换的配置 之 MarshallingHttpMessageConverter + xstream
- SSM框架搭建java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
- springmvc StringHttpMessageConverter 中文乱码的几种解决办法
- java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJacksonHttpMessageC
- 简化Spring(1)--配置文件http://www.blogjava.net/calvin/archive/2005/08/21/10530.html
- springmvc StringHttpMessageConverter 中文乱码的几种解决办法(亲测)
- String3 MVC-----使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJacksonHttpMessageC
- android 横屏竖屏设置的详解(最好不要用Java代码实现,用xml配置文件吧)
- 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括..
- Spring配置文件的三种方法(创建测试类Test.java)
- Java 学习笔记04:Spring XML配置文件Bean
- 在STS(SpringSource Tool Suite )工具中,设置maven的配置文件
- 主题:Java自动重载Spring配置文件
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务(转载)
- struts2 ibatis spring 框架整合配置文件的设置
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 只能用于会话状态的EnableSessionState设置为true时,无论是在配置文件或Page指令。还请确保在<configuration>\的<system.web>\的<httpModules>在应用程序配置节包括System.We
- 主题:Java自动重载Spring配置文件
- java ssh spring 文件配置