java文件配置Spring设置StringHttpMessageConverter
来源:互联网 发布:淘宝店如何看宝贝降权 编辑:程序博客网 时间:2024/05/20 03:48
圈内规矩,转载请注明出处,起码标个CSDN,虽然可能没人转
前言:总是看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@EnableWebMvcpublic 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); }}
0 0
- java文件配置Spring设置StringHttpMessageConverter
- spring mvc 注解配置StringHttpMessageConverter不生效
- spring mvc 注解配置StringHttpMessageConverter不生效
- spring mvc 注解配置StringHttpMessageConverter不生效
- java ssh spring 文件配置
- 关于spring mvc ajax请求乱码问题 StringHttpMessageConverter
- Java基于Spring配置读取properties文件
- spring quartz 文件配置
- spring配置头文件
- jpa+spring文件配置
- spring 配置 hibernate文件
- Spring文件配置模板
- Spring 配置日志文件
- spring文件配置
- spring配置静态文件
- spring XML文件配置
- spring 配置xml文件
- spring xml文件配置
- Random Pick Index
- rpm 命令
- H5 localStorage 和 sessionStorage 对json的处理方式
- Oracle中的tnsnames.ora文件修改后无法保存
- ListView子项item的显示与隐藏
- java文件配置Spring设置StringHttpMessageConverter
- jquery对动态添加内容添加事件
- iOS时间差8小时问题
- 配置spring+mybatis 所发现的奇怪问题
- oracle package pragma SERIALLY_REUSABLE(告诉PL/SQL 的运行时引擎,在数据引用之时不要保持包级数据。)
- set常用方法及遍历方式
- 第9周—项目3(2)两个稀疏矩阵相加的运算
- Shell脚本加密
- lintcode Coins in Line II 硬币排成线 II