spring4 注解 添加ContentNegotiatingViewResolver

来源:互联网 发布:sql语句高级教程 编辑:程序博客网 时间:2024/06/05 16:47

创建 ContentNegotiatingViewResolver


package spittr.config;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.http.MediaType;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.stereotype.Controller;import org.springframework.web.accept.ContentNegotiationManager;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.servlet.View;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.BeanNameViewResolver;import org.springframework.web.servlet.view.ContentNegotiatingViewResolver;import org.springframework.web.servlet.view.InternalResourceViewResolver;import org.springframework.web.servlet.view.json.MappingJackson2JsonView;/** * web的控制config *  * @ClassName WebConfig * @Description TODO * @author dong.tl * @date 2017年4月15日 下午2:00:13 * */@Configuration@EnableWebMvc@ComponentScan(basePackages = "spittr.web", useDefaultFilters = false, includeFilters = {        @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Controller.class),        @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = ControllerAdvice.class)})public class WebConfig extends WebMvcConfigurerAdapter {    @Bean    public ViewResolver viewResolver() {        InternalResourceViewResolver resolver = new InternalResourceViewResolver();        resolver.setPrefix("/WEB-INF/view/");        resolver.setSuffix(".jsp");        resolver.setExposeContextBeansAsAttributes(true);        return resolver;    }    @Override    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {        configurer.enable();    }    /**     *      */    @Override    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {        converters.add(mappingJackson2HttpMessageConverter());        super.configureMessageConverters(converters);    }        /**         * json信息转换器     * @author dong.tl      * @date 2017年4月28日 下午3:29:04       * @return      */      @Bean    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){     // 主要针对 IE返回json为下载的问题        List<MediaType> jsonSupportedMediaTypes = new ArrayList<MediaType>();        jsonSupportedMediaTypes.add(MediaType.TEXT_PLAIN);        // 定义json解析器的返回类型        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();        mappingJackson2HttpMessageConverter.setDefaultCharset(Charset.forName("utf-8"));        mappingJackson2HttpMessageConverter.setSupportedMediaTypes(jsonSupportedMediaTypes);        return mappingJackson2HttpMessageConverter;    }    /**         * 声明ContentNegotiatingViewResolver     * @author dong.tl      * @date 2017年4月28日 下午3:35:09       * @param cnm     * @return      */      @Bean    public ViewResolver cnViewResolver(ContentNegotiationManager cnm) {        ContentNegotiatingViewResolver cnvr = new ContentNegotiatingViewResolver();        cnvr.setContentNegotiationManager(cnm);        return cnvr;    }    @Override    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {//        configurer.ignoreAcceptHeader(true);        configurer.defaultContentType(MediaType.TEXT_HTML);        Map<String, MediaType> mediaTypes = new HashMap<String, MediaType>();        mediaTypes.put("json", MediaType.TEXT_PLAIN);        mediaTypes.put("htm", MediaType.TEXT_HTML);        configurer.mediaTypes(mediaTypes );    }        /**         * 以bean的形式查找视图     * @author dong.tl      * @date 2017年4月28日 下午3:29:42       * @return      */      @Bean    public ViewResolver beanNameViewResolver() {        return new BeanNameViewResolver();    }    /**         * 将"json" 定义为JSON的视图     * @author dong.tl      * @date 2017年4月28日 下午3:30:57       * @return      */      @Bean    public View json() {        MappingJackson2JsonView mappingJackson2JsonView = new MappingJackson2JsonView();        mappingJackson2JsonView.setContentType(MediaType.TEXT_PLAIN_VALUE);        return mappingJackson2JsonView;    }}


0 0
原创粉丝点击