Spring mvc实现Restful返回xml格式数据实例详解

spring mvc实现Restful返回xml格式数据

最近,想在自己的小项目中搭建一个Restful风格的服务接口api,项目用的spring mvc 3,听说spring mvc本身就能十分方便的支持restful的实现,于是查询了下资料,果然非常强大。

在一次偶然的#墙#外#(你懂的)状态下浏览到了一个老外的博客,举了几个入门例子十分经典,原文是E文+被墙状态,觉得有必要扒过来收藏学习下。

在本示例中,我们将向您展示如何将对象转换成xml格式并通过spring mvc框架返回给用户。

技术及环境:

Spring 3.0.5.RELEASE
JDK 1.6
Eclipse 3.6
Maven 3

1、添加项目依赖

不需要更多,你只要添加spring mvc的依赖即可:

<properties>
 <spring.version>3.0.5.RELEASE</spring.version>
</properties>
<dependencies>
 <!-- Spring 3 dependencies -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-core</artifactId>
 <version>${spring.version}</version>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-web</artifactId>
 <version>${spring.version}</version>
 </dependency>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>${spring.version}</version>
 </dependency>
</dependencies>

2、实体类JavaBean

一个简单的JavaBean,添加了JAXB 注解,稍后将会被转换成xml。

JAXB已经包含在JDK1.6中,你不需要添加额外的依赖库,只需要使用注解,spring会自动将其转换为xml格式。

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "coffee")
public class Coffee {
 String name;
 int quanlity;
 public String getName() {
 return name;
 }
 @XmlElement
 public void setName(String name) {
 this.name = name;
 }
 public int getQuanlity() {
 return quanlity;
 }
 @XmlElement
 public void setQuanlity(int quanlity) {
 this.quanlity = quanlity;
 }
 public Coffee(String name, int quanlity) {
 this.name = name;
 this.quanlity = quanlity;
 }
 public Coffee() {
 }
}

3、Controller

添加@ResponseBody注解到你的方法返回值,在spring文档中没有太多的细节,它会自动处理转换。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.mkyong.common.model.Coffee;
@Controller
@RequestMapping("/coffee")
public class XMLController {
 @RequestMapping(value="{name}", method = RequestMethod.GET)
 public @ResponseBody Coffee getCoffeeInXML(@PathVariable String name) {
 Coffee coffee = new Coffee(name, 100);
 return coffee;
 }
}

4、mvc:annotation-driven

在你的spring配置文件中,启用mvc:annotation-driven注解。

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-3.0.xsd
  http://www.springframework.org/schema/mvc
  http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
 <context:component-scan base-package="com.mkyong.common.controller" />
 <mvc:annotation-driven />
</beans>

或者,你也可以添加spring-oxm.jar依赖,并用以下的MarshallingView处理转换,使用这种方法,你可以不用在方法中使用@ResponseBody注解。

<beans ...>
 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
 <bean id="xmlViewer"
 class="org.springframework.web.servlet.view.xml.MarshallingView">
 <constructor-arg>
 <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
 <property name="classesToBeBound">
 <list>
  <value>com.mkyong.common.model.Coffee</value>
 </list>
 </property>
 </bean>
 </constructor-arg>
 </bean>
</beans>

5、示例结果

访问URL:http://localhost:8080/SpringMVC/rest/coffee/arabica

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Spring 配置文件XML头部文件模板实例详解

    普通spring配置文件模板: <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.s

  • 详解spring applicationContext.xml 配置文件

    applicationContext.xml 文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http

  • 详解Spring Aop实例之xml配置

    AOP的配置方式有2种方式:xml配置和AspectJ注解方式.今天我们就来实践一下xml配置方式. 我采用的jdk代理,所以首先将接口和实现类代码附上 package com.tgb.aop; public interface UserManager { public String findUserById(int userId); } package com.tgb.aop; public class UserManagerImpl implements UserManager { publ

  • Spring的注解配置与XML配置之间的比较

    注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名.类型等信息,如果关系表字段和 PO 属性名.类型都一致,您甚至无需编写任务属性映射信息--因为这些信息都可以通过 Java 反射机制获取. 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,

  • Spring使用AspectJ注解和XML配置实现AOP

    本文演示的是Spring中使用AspectJ注解和XML配置两种方式实现AOP 下面是使用AspectJ注解实现AOP的Java Project 首先是位于classpath下的applicationContext.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmln

  • Spring在web.xml中的配置详细介绍

    Spring在web.xml中的配置详细介绍 前言      在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制自动加载到容器中.在web项目中,配置文件加载到web容器中进行解析.目前,spring提供了两种加载器,以供web容器的加载:一种是ContextLoaderListener,另一种是ContextLoaderServlet.这两种在功能上完全相同,只是前一种是基于Servlet2.3版本中新引入的Listener接口实现,

  • java实现Spring在XML配置java类的方法

    1. 创建自己的bean文件:beans.xml <?xml version="1.0" encoding="UTF-8"?> <busi-beans> <beans> <bean id="SysHelloImpl" type="com.cxm.test.SysHello"> <desc>test</desc> <impl-class>com.

  • 详解Spring mvc的web.xml配置说明

    在说明web.xml配置之前我们先来了解一下需要配置的配置项的作用. 1.监听器(listener) 事件监听,js里应用广泛,各种事件函数的实现,Android和java se也是广泛的应用,各种点击事件的监听.当触发某个事件时,会触发监听在该事件上的所有监听器.spring 的 org.springframework.web.context.ContextLoaderListener 就是实现了 ServletContextListener 接口的监听器,该监听器会在容器(tomcat,je

  • Spring mvc实现Restful返回xml格式数据实例详解

    spring mvc实现Restful返回xml格式数据 最近,想在自己的小项目中搭建一个Restful风格的服务接口api,项目用的spring mvc 3,听说spring mvc本身就能十分方便的支持restful的实现,于是查询了下资料,果然非常强大. 在一次偶然的#墙#外#(你懂的)状态下浏览到了一个老外的博客,举了几个入门例子十分经典,原文是E文+被墙状态,觉得有必要扒过来收藏学习下. 在本示例中,我们将向您展示如何将对象转换成xml格式并通过spring mvc框架返回给用户. 技

  • Spring mvc实现Restful返回json格式数据实例详解

    在本示例中,我们将向您展示如何将对象转换成json格式并通过spring mvc框架返回给用户. 使用技术及环境: Spring 3.2.2.RELEASE Jackson 1.9.10 JDK 1.6 Eclipse 3.6 Maven 3 PS:在spring 3 中,要输出json数据,只需要添加Jackson 库到你的classpath. 1.项目依赖 spring和jackson的依赖: <project xmlns="http://maven.apache.org/POM/4.

  • javascript解析ajax返回的xml和json格式数据实例详解

    本文实例讲述了javascript解析ajax返回的xml和json格式数据.分享给大家供大家参考,具体如下: 写个例子,以备后用 一.JavaScript 解析返回的xml格式的数据: 1.javascript版本的ajax发送请求 (1).创建XMLHttpRequest对象,这个对象就是ajax请求的核心,是ajax请求和响应的信息载体,单是不同浏览器创建方式不同 (2).请求路径 (3).使用open方法绑定发送请求 (4).使用send() 方法发送请求 (5).获取服务器返回的字符串

  • jQuery解析与处理服务器端返回xml格式数据的方法详解

    本文实例讲述了jQuery解析与处理服务器端返回xml格式数据的方法.分享给大家供大家参考,具体如下: 1.php代码: <?php header("Content-Type:text/xml; charset=utf-8");//声明浏览器端返回数据的格式为xml文档格式 echo "<?xml version='1.0' encoding='utf-8'?>". "<comments>". "<c

  • Spring Cloud 覆写远端的配置属性实例详解

    应用的配置源通常都是远端的Config Server服务器,默认情况下,本地的配置优先级低于远端配置仓库.如果想实现本地应用的系统变量和config文件覆盖远端仓库中的属性值,可以通过如下设置: spring: cloud: config: allowOverride: true overrideNone: true overrideSystemProperties: false overrideNone:当allowOverride为true时,overrideNone设置为true,外部的配

  • php判断文件上传图片格式的实例详解

    php判断文件上传图片格式的实例详解 判断文件图片类型, $type = $_FILES['image']['tmp_name'];//文件名 //$type = $this->getImagetype( $type ); $filetype = ['jpg', 'jpeg', 'gif', 'bmp', 'png']; if (! in_array($type, $filetype)) { return "不是图片类型"; } 如上如果用户修改文件后缀为png jpeg等无法满

  • Linux中的bz2压缩格式的实例详解

    Linux中的bz2压缩格式的实例详解 一 语法 bzip2 源文件 压缩为bz2格式,不保存源文件 bzip2 -k 源文件 压缩之后保留原文件 注意:bzip2命令不能压缩目录 bzip2 -d 压缩文件 解压缩,-k保留压缩文件 bunzip2 压缩文件 解压缩,-k保留压缩文件  二 实战 [root@localhost test]# ls abc cdf dirtst [root@localhost test]# bzip2 abc [root@localhost test]# ls

  • Spring jdbc中数据库操作对象化模型的实例详解

    Spring jdbc中数据库操作对象化模型的实例详解 Spring Jdbc数据库操作对象化 使用面向对象方式表示关系数据库的操作,实现一个线程安全可复用的对象模型,其顶级父类接口RdbmsOperation. SqlOperation继承该接口,实现数据库的select, update, call等操作. 1.查询接口:SqlQuery 1) GenericSqlQuery, UpdatableSqlQuery, MappingSqlQueryWithParameter 2) SqlUpda

  • IOS 改变导航栏返回按钮的标题实例详解

    IOS 改变导航栏返回按钮的标题实例详解 前言: 下午又找到了一个新的方法 这个方法不错 暂时没有发现异常的地方. 新写的App中需要使用UINavigationController对各个页面进行导航,但由于第一级页面的title较长,在进入第二级页面后返回按钮leftButtonItem的title就会变得很长,对NavigationBar空间占用很大,而且不美观,于是使用代码对leftButtonItem的title文本进行修改,无论是设置self.navigationItem.leftBa

  • Android使用xml自定义图片实例详解

    Android使用xml自定义图片实例详解 实现效果图: 白色圆角图片 bg_round_rectangle_white.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-

随机推荐