spring基于xml格式的前后端数据交换的配置 之 MarshallingHttpMessageConverter + xstream
2017-11-14 18:15
567 查看
MarshallingHttpMessageConverter 方式解析xml(支持注解修改元素别名)配置及代码如下:
xml配置文件中添加converter
pom文件
controller文件
两个出入参dto(只截部分代码)
前端文件html
另外一种使用jackson实现xml数据交换的配置,详见另一篇博客
http://blog.csdn.net/vincent_field/article/details/78535990
xml配置文件中添加converter
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <constructor-arg> <bean class="org.springframework.oxm.xstream.XStreamMarshaller"> <property name="streamDriver"> <bean class="com.thoughtworks.xstream.io.xml.StaxDriver"/> </property> <property name="annotatedClasses"> <list> <value>com.mufeng.dto.in.Xml</value> <value>com.mufeng.dto.out.TestDtoOut</value> </list> </property> </bean> </constructor-arg> <property name="supportedMediaTypes"> <list> <value>application/xml;charset=UTF-8</value> <value>text/xml;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean>
pom文件
<!-- xstream xml start --> <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- xstream xml end -->
controller文件
@RequestMapping(value = "txml", headers={"content-type=application/xml"}) public Object testXml(@RequestBody Xml xml/*, HttpServletRequest req*/) { try { ObjectMapper mapper = new ObjectMapper(); mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) .enable(JsonGenerator.Feature.IGNORE_UNKNOWN).enable(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES); System.out.println(mapper.writeValueAsString(xml)); } catch (JsonProcessingException e) { e.printStackTrace(); } TestDtoOut tdo = new TestDtoOut(); tdo.code = 200; tdo.msg = "";//xml.getToUserName(); return tdo; }
两个出入参dto(只截部分代码)
package com.mufeng.dto.in; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias(value="xml") public class Xml { @XStreamAlias(value="ToUserName") String toUserName; String FromUserName; Long CreateTime; String MsgType; Long MsgId; String Content;
package com.mufeng.dto.out; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias(value="testDtoOut") public class TestDtoOut { public Integer code; public String msg;
前端文件html
<html> <head> <script type="text/javascript"> var xmlData = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[this is a test]]></Content><MsgId>1234567890123456</MsgId></xml>"; var xmlhttp; function loadXMLDoc(url) { xmlhttp=null; if (window.XMLHttpRequest) {// all modern browsers xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) {// for IE5, IE6 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if (xmlhttp!=null) { xmlhttp.onreadystatechange=state_Change; xmlhttp.open("POST",url,true); xmlhttp.setRequestHeader("Accept","application/xml"); xmlhttp.setRequestHeader("Content-Type","application/xml"); xmlhttp.send(xmlData); } else { alert("Your browser does not support XMLHTTP."); } } function state_Change() { if (xmlhttp.readyState==4) {// 4 = "loaded" if (xmlhttp.status==200) {// 200 = "OK" document.getElementById('p1').innerHTML="This file was last modified on: " + xmlhttp.getResponseHeader('Last-Modified'); } else { alert("Problem retrieving data:" + xmlhttp.statusText); } } } </script> </head> <body> <p id="p1"> The getResponseHeader() function returns a header from a resource. Headers contain file information like length, server-type, content-type, date-modified, etc.</p> <button onclick="loadXMLDoc('http://localhost:8080/valida/webctrl/demo/txml')">Get "Last-Modified"</button> </body> </html>
另外一种使用jackson实现xml数据交换的配置,详见另一篇博客
http://blog.csdn.net/vincent_field/article/details/78535990
相关文章推荐
- spring基于xml格式的前后端数据交换的配置 之 MappingJackson2XmlHttpMessageConverter
- java文件配置Spring设置StringHttpMessageConverter
- Spring3.x升级到Spring.x4时, 找不到MappingJacksonHttpMessageConverter的异常
- SpringMvc MappingJacksonHttpMessageConverter 异常
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Cou
- Spring HttpMessageConverter 之 Jackson
- Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- spring中MappingJacksonHttpMessageConverter的使用
- android annotations Rest Get GsonHttpMessageConverter 获取服务端简单数据
- @ResponseBody 返回json字符串的核心类是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter,它使用了Jackson 这个开源的第三方类库。主要是以下两个jar包:jackson-core-asl-1.6.4.jar;jackson-mapper-asl-1.6.4.jar
- org.springframework.http.converter.HttpMessageNotWritableException:
- 经检查,各种没问题,但是前台500。后台org.springframework.http.converter.HttpMessageNotWritableException
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用Spring4时, 运行时出现找不到MappingJacksonHttpMessageConverter的情况
- Not found org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
- Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Co
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- SPRING MVC3.2案例讲解--使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务