Spring MVC Controller 实现返回XML格式的数据

一、场景

对于Spring框架项目中,有些情况我们需要返回xml格式数据。这里使用JAXB来实现,而JAXB且已经包含在JDK1.6中了。

二、环境

  • Spring 4.0.5.RELEASE
  • JDK 1.7
  • Eclipse
  • Maven
  • tomcat7

三、创建项目

(1)创建maven的Web项目

Spring MVC Controller 实现返回XML格式的数据_第1张图片

(2)pom.xml文件依赖


	4.0.0
	spring.mvc.xml
	spring-mvc-xml
	war
	0.0.1-SNAPSHOT
	spring-mvc-xml Maven Webapp
	http://maven.apache.org

	
		4.0.5.RELEASE
	

	
		
		
			org.springframework
			spring-core
			${spring.version}
		
		
			org.springframework
			spring-web
			${spring.version}
		
		
			org.springframework
			spring-webmvc
			${spring.version}
		
	

	
		spring-mvc-xml
	

(3)web.xml




    
        index.jsp
    
    
        contextConfigLocation
        classpath:spring-context.xml
    

    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    

    
        encodingFilter
        /*
    

    
        org.springframework.web.context.ContextLoaderListener
    
    
    
        springMVC
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring-context-mvc.xml
        
        
        1
    

    
        springMVC
        *.do
    

(4)spring-context.xml配置


        
 

(5)spring-context-mvc.xml配置


        
	

	
	


(6)controller


package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.bean.User;

@Controller
public class UserController {
	@ResponseBody
	@RequestMapping("/xml")
	public User demo() {
		User user = new User();
		user.setName("name");
		user.setPassword("password");
		return user;
	}
}

(7)实体类


package com.bean;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class User {

	private String name;

	private String password;

	public User() {
	}

	public String getName() {

		return name;
	}

	public void setName(String name) {

		this.name = name;
	}

	public String getPassword() {

		return password;
	}

	public void setPassword(String password) {

		this.password = password;
	}

}

四、测试

(1)启动项目

(2)浏览器访问

http://localhost:8080/xml.do

Spring MVC Controller 实现返回XML格式的数据_第2张图片

五、JAXB Annotation说明

@XmlType,将Java类或枚举类型映射到XML模式类型
@XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化。FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序。
@XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
@XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
@XmlRootElement,将Java类或枚举类型映射到XML元素。
@XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
@XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。
 

六、Demo下载

demo地址 :  https://github.com/2014team/spring-xml-demo.git

参考 文章:https://blog.csdn.net/Pnoter/article/details/52218363

 

七、其他方式

引入jar

 
		
		    com.thoughtworks.xstream
		    xstream
		    1.4.8
		
@RequestMapping(value="/jar/xml.do", produces={"application/xml; charset=UTF-8"})
	@ResponseBody
	public String JarXml() {
		User2 user = new User2();
		user.setName("name");
		user.setPassword("password");
		XStream xStream = new XStream();
		xStream.alias("user", User2.class);
		String xml = xStream.toXML(user);
		return xml;
	}

 

你可能感兴趣的:(JAVA)