Spring MVC返回XML格式的数据

来源:互联网 发布:淘宝刷收藏怎么算的 编辑:程序博客网 时间:2024/05/14 11:14

 代码:

readxml.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>测试返回XML格式的数据</title><script type="text/javascript" src="js/jquery-1.11.0.min.js"></script><script type="text/javascript" src="js/json2.js"></script><script type="text/javascript">$(document).ready(function(){readxml();});function readxml(){$.ajax("${pageContext.request.contextPath}/readxml",// 发送请求的URL字符串。{dataType : "text", // 预期服务器返回的数据类型。   type : "POST", //  请求方式 POST或GET    async:  true , // 默认设置下,所有请求均为异步请求。如果设置为false,则发送同步请求    // 请求成功后的回调函数。    success :function(xml){   // 获得xml数据的id,name,author var id = $("id", xml).text(); var name = $("name", xml).text(); var author = $("author", xml).text(); var tr  = $("<tr align='center'/>");            $("<td/>").html(id).appendTo(tr);            $("<td/>").html(name).appendTo(tr);            $("<td/>").html(author).appendTo(tr);            $("#booktable").append(tr);   },   // 请求出错时调用的函数   error:function(){   alert("数据接收失败");   }});}</script></head><body><table id="booktable" border="1"  style="border-collapse: collapse;"><tr align="center">  <th>编号</th>  <th>书名</th>  <th>作者</th></tr></table></body></html>

book.xml

<?xml version="1.0" encoding="UTF-8"?><book><id>1</id><name>Spring MVC企业应用实战</name><author>海哥</author></book>

Book.java

package com.bean;import java.io.Serializable;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;// @XmlRootElement表示XML文档的根元素@XmlRootElementpublic class Book implements Serializable {private Integer id;private String name;private String author;public Book() {super();// TODO Auto-generated constructor stub}public Book(Integer id, String name, String author) {super();this.id = id;this.name = name;this.author = author;}public Integer getId() {return id;}// 该属性作为xml的element@XmlElementpublic void setId(Integer id) {this.id = id;}public String getName() {return name;}@XmlElementpublic void setName(String name) {this.name = name;}public String getAuthor() {return author;}@XmlElementpublic void setAuthor(String author) {this.author = author;}@Overridepublic String toString() {return "Book [id=" + id + ", name=" + name + ", author=" + author + "]";}}

BookController.java

package com.control;import java.io.InputStream;import javax.xml.bind.JAXBContext;import javax.xml.bind.Unmarshaller;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.bean.*;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class BookController {private static final Log logger = LogFactory.getLog(BookController.class); // @RequestBody Book book会将传递的xml数据自动绑定到Book对象 @RequestMapping(value="/sendxml", method=RequestMethod.POST)   public void sendxml(@RequestBody Book book) {   logger.info(book); logger.info("接收XML数据成功"); }   // @ResponseBody 会将Book自动转成XML数据返回 @RequestMapping(value="/readxml", method=RequestMethod.POST)   public @ResponseBody Book readXml()throws Exception {  // 通过JAXBContext的newInstance方法,传递一个class就可以获得一个上下文 JAXBContext context = JAXBContext.newInstance(Book.class);   // 创建一个Unmarshall对象 Unmarshaller unmar = context.createUnmarshaller();   InputStream is = this.getClass().getResourceAsStream("/book.xml"); // Unmarshall对象的unmarshal方法可以进行xml到Java对象的转换 Book book = (Book) unmar.unmarshal(is);   logger.info(book);      return book; }  }

截图:


0 0
原创粉丝点击