当前位置: 首页>编程语言>正文

springboot 返回xml格式数据 springmvc返回xml

没有参考书,只能先百度别人是如何配置的。首先确定需要使用 @ResponseBody 注解,而XML配置如下:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJackson2HttpMessageConverter" />
            </list>
        </property>
    </bean>
    <bean id="mappingJackson2HttpMessageConverter" 
    		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
            	<value>application/json;charset=UTF-8</value>
                <value>text/html;charset=UTF-8</value>
                <value>text/json;charset=UTF-8</value>    
            </list>
        </property>
     </bean>

我的springMVC是基于java配置的(个人爱好),所以不能直接粘xml配置。但是xml和java配置是有对应关系的(尽管不是完全对应)。所以,还是可以得到一些信息。 显然,这块配置的重点在于MappingJackson2HttpMessageConverter类,和其supportedMediaTypes属性;

于是在springWeb部分的文档查找MappingJackson2HttpMessageConverter类,相关度最高的结果如下:

springboot 返回xml格式数据 springmvc返回xml,springboot 返回xml格式数据 springmvc返回xml_List,第1张

文档链接:https://docs.spring.io/spring-framework/docs/4.3.10.RELEASE/spring-framework-reference/html/mvc.html#mvc-features

(英语不行的,可以下一个有翻译功能的浏览器(chrome就不错),虽然翻译水平很差,但比没有强,另外,在当前页面按 ctrl+f 可以查找内容,和word一样)

查找文档,并且结合先前的xml信息,可以得知(或者说猜测):配置消息转化器,需要重写WebMvcConfigurerAdapter类的configureMessageConverters方法。然后在方法中new 一个MappingJackson2HttpMessageConverter对象,并设置其supportedMediaTypes属性。
最后将对象添加到方法的入口参数converters对象中。(:WebMvcConfigurerAdapter类就是配置视图解析器的那个类)

到这终于可以敲代码了:

@Override
	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
		MappingJackson2HttpMessageConverter mapJacksonConverter=new MappingJackson2HttpMessageConverter();
		mapJacksonConverter.setSupportedMediaTypes(mediaTypesList); // 到这一步发现此方法接受List<MediaType>参数,然后又是一番尝试 o(╯□╰)o
		List<MediaType> mediaTypesList = new LinkedList<MediaType>();   // List 只是一个接口,意味着不能通过LIst<Object> list=new List<Object> ()  实例化,需要给List赋一个子类对象, 比如LinkedList;
		mediaTypesList.add(MediaType.APPLICATION_JSON_UTF8);
		mediaTypesList.add(MediaType.TEXT_HTML);
		mediaTypesList.add(MediaType.APPLICATION_JSON_UTF8);
		converters.add(mapJacksonConverter);
	}

最后不要忘记在返回对象的控制器方法上加 @ResponseBody 注解

本来以为这样就可以了,可是运行不出结果。百度得知, springMVC将对象解析为json格式需要 jackson的包,不过不用格外配置,构建路径就行,因为springMVC对jackson是默认支持的

将依赖的包下载后导入(如果是maven工程,就在pom.xml配置),导入jackson-annotations-2.9.7, jackson-core-2.9.7,jackson-databind-2.9.7 这三个包

运行成功;

控制器返回前端的是一个json对象,输出对象内容可以使用如下语句:

function(data,status){
	alert("数据: " + data.city+ "\n状态: " + status);   //此函数是jquery的 post()回调函数,'city'是对象的属性之一
}

效果如下:

springboot 返回xml格式数据 springmvc返回xml,springboot 返回xml格式数据 springmvc返回xml_java_02,第2张

这就是基于java 配置 对象转换为json格式;



https://www.xamrdz.com/lan/52q1923074.html

相关文章: