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格式的数据, 发现并没有这样的工具类或者是 用法。。。