spring基于xml格式的前后端数据交换的配置 之 MappingJackson2XmlHttpMessageConverter
来源:互联网 发布:macbook下载软件免费 编辑:程序博客网 时间:2024/05/26 07:29
MappingJackson2XmlHttpMessageConverter方式解析xml(支持注解修改元素别名)配置及代码如下:
xml配置文件中添加converter
<bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/xml;charset=UTF-8</value> </list> </property> <property name="prettyPrint" value="false"/> </bean>
pom 文件(在原来的基础上添加了jackson-dataformat-xml的依赖,这里jackson为2.8.7版本)
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>${jackson.version}</version></dependency>
controller文件(这个controller本就是@restcontroller)
@RequestMapping(value = "txml", headers = { "content-type=application/xml;charset=UTF-8"})public Object testXml(@RequestBody Xml xml) {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();}Test_DtoOut tdo = new Test_DtoOut();tdo.code = 200;tdo.msg = xml.getToUserName();return tdo;}
两个出入参dto(只截部分代码)
package com.mufeng.dto.in;import com.fasterxml.jackson.annotation.JsonProperty;import com.fasterxml.jackson.annotation.JsonRootName;@JsonRootName(value="out")public class Xml {@JsonProperty(value="toUserName")String toUserName;@JsonProperty(value="fromUserName")String fromUserName;@JsonProperty(value="CreateTime")Long createTime;@JsonProperty(value="MsgType")String msgType;@JsonProperty(value="Event")String event;
package com.mufeng.dto.out;import com.fasterxml.jackson.annotation.JsonProperty;import com.fasterxml.jackson.annotation.JsonRootName;import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;//@JacksonXmlRootElement(localName="out")@JsonRootName(value="out")public class Test_DtoOut {@JsonProperty(value="codes")public Integer code;public String msg;
前端文件html(注意前端代码要放到服务器上,浏览器输入url,否则contentType不会起作用)
<html> <head> <meta http-equiv="Content-Type" content="application/xml; charset=UTF-8"> <title>测试接收XML格式的数据</title> <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script> <!-- <script type="text/javascript" src="js/json2.js"></script> --><script type="text/javascript"> $(document).ready(function(){ sendxml(); }); function sendxml(){ var xmlData = "<out><toUserName>toUser</toUserName><fromUserName>FromUser</fromUserName><CreateTime>123456789</CreateTime><MsgType>event</MsgType><Event>subscribe</Event></out>"; $.ajax({ type: "POST", url: "http://localhost:8080/valida/webctrl/demo/txml", // data sent is xmlcontentType: "application/xml; charset=utf-8", data: xmlData, // data in response will expected xml dataType: "xml",processData: false, anysc: false,beforeSend: function(request) { request.setRequestHeader('Access-Control-Allow-Origin: *'); request.setRequestHeader('Access-Control-Allow-Methods: POST,GET,OPTIONS'); request.overrideMimeType('application/xml; charset=utf-8') console.log(JSON.stringify(request)); }, success: function (result) { console.log(result); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown + ':' + textStatus); // 错误处理 } });} </script> </head> <body> </body> </html>
后端控制台打印
{"toUserName":"toUser","fromUserName":"FromUser","CreateTime":123456789,"MsgType":"event","Event":"subscribe"}
前端接收到返回值
<out><msg>toUser</msg><codes>200</codes></out>
另外一种使用xstream实现xml数据交换的配置,详见另一篇博客
http://blog.csdn.net/vincent_field/article/details/78533426
阅读全文
0 0
- spring基于xml格式的前后端数据交换的配置 之 MappingJackson2XmlHttpMessageConverter
- spring基于xml格式的前后端数据交换的配置 之 MarshallingHttpMessageConverter + xstream
- Spring mvc中前后端数据交互的方式
- 使用Socket控制前后端的数据交换和Web应用的资源消耗
- spring基于xml的配置
- 基于NodeJS的前后端分离
- 基于NodeJS的前后端分离
- 基于Ajax的前后端分离
- 基于 SSM框架的前后端分离
- JSON——基于javascript的轻量级数据交换格式
- 关于数据交换格式XML和JSON的比较
- 于数据交换格式XML和JSON的比较
- 主要的数据交换格式XML与JASON
- spring ApplicationContext.xml之基于Session的国际化配置初探
- spring学习之---基于XML Schema的简化配置方法
- 学习Spring框架笔记之基于xml的IOC配置
- spring-websocket下的前后端分离
- Spring MVC接受XML格式的数据
- Negroni和Gorilla/mux 解析 Golang
- Embed Tomcat8简单示例
- 统一资源定位符
- MySql 里的IFNULL、NULLIF和ISNULL用法
- NCE Loss
- spring基于xml格式的前后端数据交换的配置 之 MappingJackson2XmlHttpMessageConverter
- android 路由框架搭建
- linux-apache初体验
- C++——静态成员
- 在地图上加入直方图
- 开发框架-Bootstrap见解
- 数独
- Linux 常用命令
- 总结工作中的一次重大事故