springmvc 返回xml 数据配置

json的 配置就不说了,百度很多,而且json 目前 比xml 格式的好用,而且 用的也比 xml多。 主要是 对xml的配置不明白,所以 玩了一下。 xml 数据返回, 和json 一样 也要导入 对应的 xml解析jar包的。 我用的是

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>4.0.7.RELEASE</version>
		</dependency>
		<!--spring-oxm依赖 -->
		<dependency>
			<groupId>org.codehaus.castor</groupId>
			<artifactId>castor-xml</artifactId>
			<version>1.4.1</version>
		</dependency>

主要我们现在说的不是 返回 xml视图。。。 是 xml数据, 同样 json 也是有 json视图和 json数据的。 视图这些的就更少接触了和使用了,,,无视。 放入配置:

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 请求映射 -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
		<!-- 使用自定义的输出内容转换器,而不是默认的  -->
		<property name="messageConverters">
			<!--转换器为了响应输出是 字符串还是xml还是json内容给客户端的, 
			响应客户是 xml 格式还是 json格式, 要看 客户端请求头的 Accept 是 json 还是 xml 如果 返回类给客户端的话
			 当然,如果 客户端请求是  application/xml 而xml没有配置好,返回的就是 json 格式的数据
			  -->
			<list>
				<bean
					class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="writeAcceptCharset" value="false" />
					<property name="supportedMediaTypes">
						<!--返回客户端string 类型的字符串,UTF-8 编码解决中文乱码  -->
 						<bean class="org.springframework.http.MediaType">  
                            <constructor-arg index="0" value="text" />  
                            <constructor-arg index="1" value="plain" />  
                            <constructor-arg index="2" value="UTF-8" />  
                        </bean>
					</property>
				</bean>		
						
				<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" >
					<property name="supportedMediaTypes"> 
						<list> 
							<value>text/html;charset=UTF-8</value> 
							<value>text/plain;charset=UTF-8</value> 
							<value>application/xml;charset=UTF-8</value>
						</list>
					</property>
				</bean>
				
				<!-- 
				为了返回xml格式的数据配置的,目前用不到,参考
				要使用这个 ,需要 将 返回的 实体类 加上xml 对应的注解才可以的  @XmlRootElement 这类的
				可以不用在意,因为xml 很少用,都是用的 json 了
				<bean id="marshallingHttpMessageConverter"
	class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
	<property name="marshaller" ref="castorMarshaller" />
	<property name="unmarshaller" ref="castorMarshaller" />
	<property name="supportedMediaTypes">
		<list>
			<value>text/xml;charset=UTF-8</value>
			<value>application/xml;charset=UTF-8</value>
		</list>
			</property>
		</bean>  
		--> 
				
				<bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter" />
				<!-- 返回 json给客户端的转换器  
				 MappingJacksonHttpMessageConverter 已经过时了不要使用
				-->
				 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
					<property name="supportedMediaTypes"> 
					<list> 
						<value>text/html;charset=UTF-8</value> 
						<value>text/plain;charset=UTF-8</value> 
                		<value>text/json;charset=UTF-8</value>
                		<value>application/json;charset=UTF-8</value>
					</list> 
					</property>				
				</bean>	 	
			</list>			
		</property>
	</bean>
	
	<!-- 
	 返回 xml 传输时候,使用的解析的类 
	 <bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller" />  
 	-->

主要说明一下, 如果要返回 实体类 的 xml 格式数据, 要 在 对应的 model 上加上 xml 的对应的注解, 让 xml 解析器知道是 怎么解析的,,否则返回的都是 json格式的。。。哪怕 响应的时候 代码里面 写了 响应是 application/xml 都没有用, 响应的头 还是 application/json 。 我百度看了好多,我一直想要 不使用注解,自动将bean 实体类 给 变成 xml格式的数据, 发现并没有这样的工具类或者是 用法。。。

转载于:https://my.oschina.net/ouminzy/blog/889472

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值