使用 servlet 在 Java 中实现 REST Web 服务 [重复]

Posted

技术标签:

【中文标题】使用 servlet 在 Java 中实现 REST Web 服务 [重复]【英文标题】:Using servlets to implement REST web services in Java [duplicate] 【发布时间】:2016-09-06 13:01:58 【问题描述】:

在使用 php 和 NodeJS 之前,我创建了许多提供 JSON 的 REST Web 服务,并且我知道这个概念。

现在我想使用 Java 重新实现这些 Web 服务。在对如何在 Java 中实现 Web 服务进行了一些研究之后,我发现了一些 标准 或 JAX-RS、Spring 或 Jersey 等库。但是我不知道它们之间的区别。

我想知道为什么我们不做一个简单的 servlet,它会通过 HTTP 请求调用并以 JSON 格式返回结果。如果我想使用这些标准之一,实现接受 HTTP 请求并返回 JSON 的 Web 服务的最佳选择是什么?

【问题讨论】:

因为如果您创建一个简单的 servlet,那么您必须自己完成所有由现有框架优雅处理的样板代码。这恰好是所有“我为什么要使用 X 而不是自己做 Y”问题的答案。 【参考方案1】:

你可以用石头把钉子钉在墙上。当然可以。但是,如果您有可用的锤子,您为什么要这样做呢?使用合适的工具会让你的生活变得更轻松。

以类似的方式,您可以仅使用 Servlet API 创建 REST 应用程序。但是,还有其他 API 旨在创建 REST 应用程序。那么,为什么不使用它们呢?

JAX-RS 和泽西岛

JAX-RS,目前由 JSR 339 定义,是用于创建 RESTful Web 服务的标准 Java API,它构建在 Servlet API 之上。

值得一提的是,JAX-RS 是一种规范。为了使用它,您需要一个实现,例如Jersey,它是参考实现。

一些可能有用的资源:

JAX-RS 2.0 specification Jersey documentation

Spring 框架

Spring 框架允许您创建 RESTful Web 服务,并且可以轻松地与其他 Spring 项目集成。

一些可能有用的资源:

Spring Framework website Spring Framework documentation Guide to build a RESTful web service with Spring Framework.

您可能认为有用的其他资源

Why use a framework for RESTful services in Java instead of vanilla servlets Why use JAX-RS / Jersey? Spring 4 vs Jersey for REST web services Difference between JAX-RS and Spring Rest

【讨论】:

【参考方案2】:

您实际上可以使用 Servlet API 来实现。但是您不会获得 JAX-RS 的所有好处,例如 url 映射、参数注入……您必须“手动”编写所有这些。

顺便说一下,JAX-RS 和 Jersey 之间的区别在于 JAX-RS 是一个规范,一个标准,而 Jersey 是该标准的一个实现。还有其他实现(例如 RestEASY)。 Spring 也有一个用于 REST 服务的模块。

【讨论】:

以上是关于使用 servlet 在 Java 中实现 REST Web 服务 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java中实现图片的上传

在我的 Tomcat Servlet 中实现 Websockets?

spring框架中实现了哪些servlet

用Servlet与JSP中实现分页查询

表单和servlet在idea中实现文件的上传

表单和servlet在idea中实现文件的上传