spring基于xml格式的前后端数据交换的配置 之 MarshallingHttpMessageConverter + xstream
来源:互联网 发布:多益网络校园招聘 编辑:程序博客网 时间:2024/05/05 20:22
MarshallingHttpMessageConverter 方式解析xml(支持注解修改元素别名)配置及代码如下:
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>
<!-- 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
阅读全文
0 0
- spring基于xml格式的前后端数据交换的配置 之 MarshallingHttpMessageConverter + xstream
- spring基于xml格式的前后端数据交换的配置 之 MappingJackson2XmlHttpMessageConverter
- 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格式的数据
- Qt--Meta-Object Model
- 计算单词的个数
- RxJava 详解
- Apache Torque实现分页查询
- 一块蛋清皂,把毛孔洗得一干二净
- spring基于xml格式的前后端数据交换的配置 之 MarshallingHttpMessageConverter + xstream
- 在jsp页面可以有三种方式插入java代码
- 51nod 1272 最大距离 (贪心或单调栈)
- Linux下redis安装与使用
- 写给自己
- springboot项目启动报警java.sql.SQLException:
- React Native关键字详解
- 登录、鉴权业务实践
- 代码创建UICollectionView(带分组header)