Spring MVC处理XML数据(1)

Spring MVC处理请求、响应XML格式数据(1)

Spring MVC默认使用Jaxb2RootElementHttpMessageConverter转换XML格式数据,将请求消息转换到注解XmlRootElement和XmlType作用的类中。

JAXB是一个业界标准,可以根据XML Schema产生Java类。同时,它也提供将XML实例文档反向生成Java对象的方法,并能将Java对象的内容重新写到XML实例文档中。

JAXB常用注解@XmlRootElement、@XmlElement、@XmlAttribute等

发送XML格式数据示例:

1. 请求的js

发送xml格式数据指定contentType,使用了jQuery的ajax方法发送xml数据,所以需要引入jquery.js

$(function(){
	//发送XML
	$("#_btn_send").click(function(){
		var xmlDocument = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
			+ "<student id='1'><name>小明</name><age>18</age></student>";
		$.ajax({
			url : "${pageContext.request.contextPath}/xml/sendXml.do",
			type : "post",
			data: xmlDocument,
			contentType : "application/xml",//发送数据的MIME类型
			dataType : "json",//返回数据类型
			success : function(data){
				console.log(data);	
			}
		});
	});
});

2.简单Java类Student.java

@XmlRootElement标识XML文档的根元素,@XmlElement标识普通元素,@XmlAttribute标识元素属性

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Student {
	@XmlAttribute
	private Integer id;
	@XmlElement
	private String name;
	@XmlElement
	private Integer age;

	get、set...略
}

3.请求处理Controller

@RequestBody Student student表示将前台发送的XML数据设置到对应Student对象的属性中,控制台打印检查是否正确接收;同时返回json数据表示发送成功。

@RequestMapping("/sendXml")
public @ResponseBody Map<String, Object> receiveJson(@RequestBody Student student) throws Exception {
	Map<String, Object> dataMap = new HashMap<String,Object>();
	dataMap.put("status", "success");
		
	if(student != null){
		System.out.println("id:" + student.getId() + " 姓名:" + student.getName() + " 性别:" + student.getAge());
	}else {
		System.out.println("未获取到学生信息");
	}
	return dataMap;
}

4.结果

(1).控制台


(2).浏览器控制台


5.注

(1).springmvc.xml配置文件中由于使用了<mvc:annotation-driven/>,该配置默认装配了Jaxb2RootElementHttpMessageConverter处理XML数据

(2).建议将XML元素属性定义成普通元素

(3).发送XML数据时最好指定contentType为application/xml,否则默认为application/x-www-form-urlencoded;charset-UTF-8,此时后台也可正确获取到数据,但前台会显示415,


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值