<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>
在web.xml
3.0後能夠直接使用,在Servlet
3.0環境
中, 容器會在類路徑中查找實現
javax.servlet.ServletContainerInitializer
接口的類,
若是能發現的話, 就會用它來配置Servlet
容器。Spring
提供了這個接口的實現, 名
爲SpringServletContainerInitializer
, 這個類反過來又會
查找實現WebApplicationInitializer
的類並將配置的任務交給
它們來完成。咱們的SpittrWebAppInitializer
擴展了
AbstractAnnotationConfig DispatcherServletInitializer
(同時也就實現了
WebApplicationInitializer
) , 所以當部署到Servlet
3.0容器
中的時候, 容器會自動發現它, 並用它來配置Servlet
上下文。
public class SplittrWebAppInitianlizer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { // 若是隻是簡單的一個web程序,可忽略 return new Class<?>[] { RootConfig.class }; } @Override protected Class<?>[] getServletConfigClasses() { // 配置WebConfig,主要是初始化bean等,至關於加載applicationContext.xml文件 return new Class<?>[] { WebConfig.class }; } @Override protected String[] getServletMappings() { // 處理請求的路徑 return new String[] { "/" }; } }
@Configuration @EnableWebMvc // 啓用SpringMVC @ComponentScan("com.spring02") // 啓動組件掃描 public class WebConfig extends WebMvcConfigurerAdapter { // 配置視圖解析器 @Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); resolver.setExposeContextBeansAsAttributes(true); return resolver; } // 配置處理靜態資源 @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } // 設置MessageConverter @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // 添加一個String處理起 converters.add(stringHttpMessageConverter()); } // 設置默認編碼爲UTF-8 private Charset default_charset = Charset.forName("UTF-8"); @Bean public StringHttpMessageConverter stringHttpMessageConverter() { StringHttpMessageConverter converter = new StringHttpMessageConverter(default_charset); List<MediaType> list = buildDefaultMediaTypes(); converter.setSupportedMediaTypes(list); return converter; } // 設置響應頭信息 private static List<MediaType> buildDefaultMediaTypes() { List<MediaType> list = new ArrayList<>(); list.add(MediaType.TEXT_HTML); // 這個必須設置在第一位 list.add(MediaType.APPLICATION_JSON_UTF8); return list; } }
說明:html
<mvc:annotation-driven />
WebMvcConfigurerAdapter
中的configureMessageConverters
方法,在該方法中會傳遞converters
,經過converters
去添加處理器converters.add(處理器轉換方法)
。