问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在Java中 提供 RESTful Web 服务

发布网友 发布时间:2022-04-21 19:55

我来回答

1个回答

热心网友 时间:2022-04-12 00:02

通过REST风格体系架构,请求和响应都是基于资源表示的传输来构建的。资源是通过全局ID来标识的,这些ID一般使用的是一个统一资源标识符(URI)。客户端应用使用HTTP方法(如,GET、POST、PUT或DELETE)来操作一个或多个资源。通常,GET是用于获取或列出一个或多个资源,POST用于创建,PUT用于更新或替换,而DELETE则用于删除资源。
例如,GET http //host/context/employees/12345将获取ID为12345的员工的表示。这个响应表示可以是包含详细的员工信息的XML或ATOM,或者是具有更好UI的JSP/HTML页面。您看到哪种表示方式取决于服务器端实现和您的客户端请求的MIME类型。
RESTful Web Service是一个使用HTTP和REST原理实现的Web Service。通常,一个RESTful Web Service将定义基本资源URI、它所支持的表示/响应MIME,以及它所支持的操作。
本文将介绍如何使用Spring创建Java实现的服务器端RESTful Web Services。这个例子将使用浏览器、curl和Firefox插件RESTClient作为发出请求的客户端。
本文假定您是熟悉REST基本知识的。
Spring 3的REST支持
在Spring框架支持REST之前,人们会使用其他几种实现技术来创建Java RESTful Web Services,如Restlet、RestEasy和Jersey。Jersey是其中最值得注意的,它是JAX-RS(JSR 311)的参考实现。
Spring是一个得到广泛应用的Java EE框架,它在版本3以后就增加了RESTful Web Services开发的支持。虽然,对REST的支持并不是JAX-RS的一种实现,但是它具有比标准定义更多的特性。REST支持被无缝整合到Spring的MVC层,它可以很容易应用到使用Spring构建的应用中。
Spring REST支持的主要特性包括:
注释,如@RequestMapping 和 @PathVariable,支持资源标识和URL映射
ContentNegotiatingViewResolver支持为不同的MIME/内容类型使用不同的表示方式
使用相似的编程模型无缝地整合到原始的 MVC 层
创建一个示例RESTful Web Service
本节中的例子将演示Spring 3环境的创建过程,并创建一个可以部署到Tomcat中的“Hello World”应用。然后我们再完成一个更复杂的应用来了解Spring 3 REST支持的重要概念,如多种MIME类型表示支持和JAXB支持。另外,本文还使用一些代码片断来帮助理解这些概念。
Hello World:使用Spring 3 REST支持
要创建这个例子所使用的开发环境,您需要:
IDE:Eclipse IDE for JEE (v3.4+)
Java SE5 以上
Web 容器:Apache Tomcat 6.0(Jetty或其他容器也可)
Spring 3框架(v3.0.3是本文编写时的最新版本)
其他程序库:JAXB 2、JSTL、commons-logging
在 Eclipse 中创建一个Web应用,然后设置Tomcat 6作为它的运行环境。然后,您需要设置web.xml文件来激活Spring
WebApplicationContext。这个例子将Spring bean配置分成两个文件:rest-servlet.xml 包含与MVC/REST有关的配置,rest-context.xml包含服务级别的配置(如数据源 beans)。清单 1 显示了web.xml中的Spring配置的部分。
清单 1. 在web.xml中激活Spring WebApplicationContext

以下是引用片段:

contextConfigLocation

/WEB-INF/rest-context.xml

<!-- This listener will load other application context file in addition to
rest-servlet.xml -->

org.springframework.web.context.ContextLoaderListener

rest

org.springframework.web.servlet.DispatcherServlet

1

rest
/service/*

在rest-servlet.xml文件中创建Spring MVC的相关配置(Controller、View、View Resolver)。清单 2 显示了其中最重要的部分。

清单 2. 在rest-servlet.xml文件中创建Spring MVC配置

以下是引用片段:

<bean class="org.springframework.web.servlet.mvc.annotation
.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation
.AnnotationMethodHandlerAdapter" />

<bean id="jaxbMarshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller">

dw.spring3.rest.bean.Employee
dw.spring3.rest.bean.EmployeeList

<bean id="employees" class=
"org.springframework.web.servlet.view.xml.MarshallingView">

<bean id="viewResolver" class=
"org.springframework.web.servlet.view.BeanNameViewResolver" />

上面的代码中:

Component-scan启用对带有Spring注释的类进行自动扫描,在实践中,它将检查控制器类中所定义的@Controller注释。
DefaultAnnotationHanlderMappings和AnnotationMethodHandlerAdapter使用@ReqeustMapping注释的类或函数的beans由Spring处理这个注释将在下一节进行详细介绍。
Jaxb2Mashaller定义使用JAXB 2进行对象XML映射(OXM)的编组器(marshaller)和解组器(unmarshaller )
MashallingView定义一个使用Jaxb2Mashaller的XML表示view
BeanNameViewResolver使用用户指定的bean名称定义一个视图解析器
本例将使用名为“employees”的MarshallingView。
这样就完成了Spring的相关配置。下一步是编写一个控制器来处理用户请求。清单3显示的是控制器类。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音火山版怎么查看钱包 查看方法介绍 职能手机v3职能手机的优点和缺点 关于Cascode运放的偏置电路 vb WindowsMediaPlayer1控件怎么同时播放两个视频文件 太阳马戏团特点 【加拿大必知百科系列】加拿大文化璀璨之星—太阳马戏团 太阳马戏团简介 垃圾短信如何拦截设置 垃圾短信拦截设置的方法 vivo xplay3s用奇兔刷机刷机后打电话显示SIM卡错误是怎么回事?卡重新插... 为什么我的vivo xplay3s联通卡插上去显示无SIM卡呢? 举例说明,RESTful 到底有哪些好处 REST是什么?如何实现RESTful 什么是RESTful Web Service 如何理解rest和restful,什么是restfulAPI? 怎样用通俗的语言解释什么叫 REST,以及什么是 RES... 如何使用RestTemplate访问restful服务 什么是 restful? 我想做一个 2转移1的网络切换器。通过电脑上的软件... 使用网络切换器电脑如何设罥 如何台式电脑网络转换成WIFI,需要什么硬件,按什... 广州从化花园路是哪个镇的? 在电脑上有用什么软件可以转换成移动网络的接入点? 广东省位于中国地图的什么位置 有没有什么软件可以让办公室的电脑快速在内网和外... 求win7下能用滴IP地址切换器 广发银行的客户服务专员主要工作内容是什么? 为什么百度导航从化到四会就不导航珠三角环线高速 呼叫中心客服,客服代表,客服坐席有什么区别? 电脑上网能不能切换网络 谁有中国地图及各地风景要点图? 如何在Java客户端调用RESTful服务 应用Spring MVC发布restful服务是怎样的一种体验 RESTful Web Services到底是干什么的啊~ spring mvc 提供的restful 服务怎么访问 RESTful WebService和web service的区别 如何 调用 restful web services 网站,不对外开放API,有必要用restful吗 如何POST一个JSON格式的数据给Restful服务 苹果手机icloud账户和itunes账户一样吗 微博申请超话粉丝大咖身份证使用次数超限怎么办? 苹果icloud的账户和app store都不一样怎么办 新浪微博身份证使用次数超限 微博身份证使用次数超限是什么意思? 微博认证显示身份证使用次数超限,客服说是支付宝绑... 新浪微博 填证件信息时,提示证件信息已超限 是什... 绑定身份证提示超限如何解决? 微博身份验证时提示身份证使用次数超限,客服说没... 身份证信息已被添加至其他账号,超出绑定数量限制 我申请实名认证以后,显示该身份证号超过最大注册... 绑定身份证提示超限如何解决