springmvc 返回xml

需求:

1、springmvc返回xml;

技术及环境:

  1. Spring 4.3.1.RELEASE
  2. JDK 1.8
  3. IDEA 15.0.6
  4. Maven 3

实现:

spirngxml的配置主要如下:

添加项目依赖:

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.1.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.1.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.1.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.3.1.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.1.RELEASE</version>
    </dependency>

实体类JavaBean

一个简单的JavaBean,添加了JAXB 注解,spring将会根据请求判断转换成xml。JAXB不需要添加额外的依赖库,已经包含在jdk中。

BaseXmlResult 的作用是作为返回的标志和附加消息对象(如:操作成功!操作失败等)。抽取出来,不用每个返回对象都写code和message,只需要继承即可。
XmlActionResult 为具体的要返回的信息的对象。前台页面需要解析的数据。该对象中Data为泛型对象,返回时,可根据实际情况,设置Person.class|Man.class|Woman.class对象,若有其他对象,只需对注解进行调整即可,方便维护。


public class BaseXmlResult {

    protected String code;

    protected String message;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
@XmlRootElement(name = "xml")
@XmlAccessorType(XmlAccessType.NONE)
public class XmlActionResult<T> extends BaseXmlResult{

    @XmlElements({
            @XmlElement(name="Person",type = Person.class),
            @XmlElement(name="Man",type = Man.class),
            @XmlElement(name="Woman",type = Woman.class)
    })
    private T data;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

}
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Person {

    @XmlElement
    private String name;
    @XmlElement
    private Integer sex;
    @XmlElement
    private Integer age;

    private Date birthday;

    public Person(String name, Integer sex, Integer age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")//json格式返回的日期格式化注解,日期格式json转换默认是long类型的,如:144101141111111,格式化成yyyy-MM-dd HH:mm:ss格式
    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}
Controller类
@Controller
@RequestMapping("/mvc")
public class HelloController {

    @RequestMapping("/helloXmlPerson/{name}")
    @ResponseBody
    public XmlActionResult helloXmlPerson(@PathVariable("name") String name){
        XmlActionResult<Person> actionResult = new XmlActionResult<Person>();
        actionResult.setCode("123");
        actionResult.setMessage(name);
        Person person = new Person("xxxxx",1,32);

        actionResult.setData(person);
        return actionResult;
    }
}

spring配置文件中新增

 <mvc:annotation-driven/>
  

用于启用@ResponseBody注解。

访问对应得路径后返回:

<xml>

<code>123</code>

<message>nihao</message>

<Person>

<name>xxxxx</name>

<sex>1</sex>

<age>32</age>

</Person>

</xml>

时间: 2024-08-24 20:50:12

springmvc 返回xml的相关文章

SpringMVC 返回JSON和JSP页面xml配置

SpringMVC 返回JSON和JSP页面xml配置 代码1: <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> <!-- Enables the Spring MVC @Controller programming model --> <annotation-driven /> <!-- Handles HTTP GET re

配置SpringMVC返回JSON遇到的坑

坑一:官方网站下载地址不明朗,最后找了几个下载地址:http://wiki.fasterxml.com/JacksonDownload Jackson2.5下载地址:jackson2.5.0.jar 坑二:配置文件的配置信息跟jackson的版本有关. 版本一: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 版本二:org.springframework.http.converter.json

【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www.cnblogs.com/ssslinppp/p/4528892.html [Spring学习笔记-MVC-4]返回Json数据-方式2:http://www.cnblogs.com/ssslinppp/p/4530002.html [Spring学习笔记-MVC-3.1]SpringMVC返回Json数据-

ssm框架整合入门系列——配置SpringMVC dispatcherServlet-servlet.xml

配置SpringMVC dispatcherServlet-servlet.xml 在ssm-crud项目中 SpringMVC的配置主要是在dispatcherServlet-servlet.xml文件 在这之前,先修改beans的头信息,否则按alt+/ 快捷键没有提示,并且添加context:component-scan还报错:context:component-scan is not bound,后来找到的解决方法:context:component-scan is not bound.

springmvc返回jsp源代码解决办法

url-pattern问题 spring用到forward("/WEB-INF/jsp/*.jsp")而forward当然是又要经过web.xml的映射的,然后,在URL匹配时, <url-pattern> / </url-pattern>   不会匹配到*.jsp,不会进入spring的DispatcherServlet类 <url-pattern> /* </url-pattern> 会匹配*.jsp,导致进入spring的Dispa

PHP AJAX 返回XML数据

例子:利用AJAX间接访问数据库,查出Nation表中的数据,返回XML数据,并将Nation表中的数据显示在下拉列表框中 外层建一个下拉列表框 1 <select id="sel"> 2 </select> JQurey代码 $(document).ready(function(e) { //调用ajax $.ajax({ url:"XMLChuLi.php", dataType:"XML", //返回XML数据 suc

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序

springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序 http://www.360doc.com/content/14/0309/19/834950_359080244.shtml

jQuery的ajax调用webservice返回XML数据传参错误

jQuery的ajax调用webservice返回XML数据传参错误: 有时候使用jquery的ajax调用带有参数的webservice返回XML格式输出的时候,会出现传参错误,当然错误的原因可能是多种多样的,下面就简单介绍一种. 一.错误代码: 1.ajax代码: $.ajax({ type:"post", url:"_service.asmx/getDataFromATable", data:" { tablename: temp }",

Java实现Flash请求的二进制流图片保存并返回XML信息包含图片访问地址

前段时间和Flash对接了一个打点功能,java后台提供接口,Flash实现打点功能,将打点好的图片信息传到后台java实现保存图片和打点信息.其中图片是以二进制流的方式传到java后台,图片信息是以XML传到后台保存到数据库.刚开始的实现方式保存图片总是出现损坏,最后放到的图片残缺不全,经过一番调试,最终找到了原因,是在后台写入图片流的时候出现了问题,改了之后一切正常,下面是能够正常执行的代码: public void addDotPicture(HttpServletRequest requ