在当今世界,数据扮演着非常重要的角色。 如此众多的应用程序将各种类型的数据用于不同的操作,所以最重要的方面是应用程序之间的通信。 当应用程序可以通信时,它们之间的数据共享变得容易。

就像在亚洲运行的应用程序向在欧洲运行的应用程序提供数据一样,反之亦然。 在美国托管的Facebook服务器如何在亚洲提供Facebook服务? 在世界不同地区托管的众多网站中,如何有可能使用Google帐户验证选项?

上述问题的答案是Web服务。 如下所述,有两种类型的Web服务。

  1. REST Web服务
  2. SOAP Web服务

让我们详细讨论REST Web服务。

1.简介

1.1 REST

REST是基于Web标准和HTTP协议的数据传输的体系结构原理。 在REST中,有使用REST服务器托管的资源。 每个资源都有一个称为URI的唯一ID,可以使用REST客户端进行修改和访问。

REST允许以XML,JSON,Text等不同格式表示资源。

1.2 HTTP操作

由于REST支持HTTP协议,因此它允许对资源进行以下操作。

  • GET – GET请求用于访问资源,它以所需格式表示资源。
  • POST – POST请求用于更新现有资源。 它也用于创建新资源。 它支持各种格式的资源表示。
  • PUT – PUT请求用于通过完全替换现有资源来更新资源。 根据定义,PUT请求是幂等的。
  • DELETE – DELETE请求用于删除资源。

在REST Web服务中,我们还有以下两种不同类型的REST Web服务。

  • RESTful Web服务
  • RESTless Web服务

作为教程的一部分,我们将详细讨论RESTful Web服务。

1.3 RESTful Web服务和JAX-RS

RESTful Web服务是遵循基于REST的体系结构的服务,主要用于网站。 它简单,快速,因为它不受严格的限制,并且消耗的带宽更少。

Java提出了用于根据REST体系结构创建Web服务的编程规范。 该API规范的名称是JAX-RS,它表示RESTful Web服务的Java API。 JAX-RS是Java SE 5的一部分,并成为Java EE 6中Java家族的永久成员。JAX-RS的当前版本是2.1版,于2017年9月发布。

2.注释

让我们讨论一下JAX-RS支持的不同注释和规范。

  • @Path :-告诉资源类或方法的相对路径。
  • @GET :-HTTP Get请求,用于获取资源。
  • @PUT :-HTTP PUT请求,用于创建资源。
  • @POST :-HTTP POST请求,用于创建或更新资源。
  • @DELETE :-HTTP DELETE请求,用于删除资源。
  • @HEAD :-这是HTTP HEAD请求,用于获取方法可用性的状态。
  • @Produces :-告诉您从Web服务生成的HTTP响应的类型。 例如,APPLICATION / XML,APPLICATION / JSON等。
  • @Consumes :-这告诉Web服务可以处理的HTTP请求的类型。 例如,APPLICATION / XML可用于以XML格式发送请求。
  • @PathParam :-它将传递给方法的参数绑定到路径中的值。
  • @QueryParam :-它将传递给方法的参数绑定到路径中的查询参数。
  • @HeaderParam :-这@HeaderParam传递给方法的参数绑定到HTTP标头。
  • @DefaultValue :-它将为传递给方法的参数分配默认值。
  • @Context :-它是资源的上下文。 例如,将HTTPRequest作为上下文。

3.球衣

3.1什么是球衣

Jersey是一个开放源代码框架,用于构建RESTful Web服务。 它不仅仅是JAX-RS的实现。 Jersey还提供了自己的API,以使Web服务的创建更加简单和有用。 它还提供了许多SPI,以根据开发人员的需求扩展框架。

3.2球衣的组成

泽西岛充满了很多功能和组件。 但是,泽西岛有四个主要组成部分。 它们如下。

  • 核心服务器:-用于构建RESTful Web服务。 这些组件包括jersey-core,jersey-server和jsr311-api。
  • 核心客户端:-为了与Web服务交互,我们需要一个客户端在Web服务之间进行通信。 这些组件由jersey-client组成。
  • JAXB支持: -Jersey提供对JAXB的支持。 它使XML到对象的转换变得容易。 执行此支持的组件是jersey-server。
  • JSON支持: Jersey提供对JAXB的支持。 它使JSON到对象的转换变得容易。 执行此支持的组件是jersey-server。
  • 与Spring和Guice框架轻松集成。

这些是Jersey的一些主要组件和功能。 现在让我们讨论如何安装Jersey。

3.3球衣安装

有两种方法可以在程序中安装Jersey。 我们可以使用Gradle,也可以从jersey网站执行直接安装。

让我们来看看这两种方式。

3.3.1摇篮

如果我们使用Gradle,则必须在项目依赖项部分中添加以下行。

compile 'org.glassfish.jersey.containers:jersey-container-servlet-core:2.26'

请注意,项目名称从2.26版本开始已更改。 所有早期版本的名称都只有jersey-container-servlet

3.3.2从Jersey网站安装

要从其网站安装Jersey,我们可以在网站上下载该软件包,其中包含除第三方依赖项之外的所有依赖项。

您可以从此链接下载软件包。

下载软件包后,解压缩zip文件并将所有jar粘贴到程序的WEB-INF/lib中。 这就是您现在准备使用球衣的全部。

4.工具与技术

让我们看看用于构建程序的技术和工具。

  • Eclipse Oxygen.2发布(4.7.2)
  • Java –版本9.0.4
  • 摇篮– 4.6
  • JAX-RS 2.1
  • 泽西岛2.26
  • Tomcat 9.0

5.项目结构

我们的项目结构如下图所示。

JAX-RS项目的项目结构

上面显示的项目结构用于JAX-RS的计划实施,可以从Jersey网站下载库。 对于带有build.gradle和pom.xml的项目,项目结构将略有不同。

6.方案目标

作为程序的一部分,我们将尝试使用Jersey创建一个简单的Web服务。 另外,我们将尝试了解创建Web服务所需完成的配置和设置。

6.1罐子

以下是将成为文件夹WEB-INF/lib的Jar的列表。

Jars作为JAX-RS项目构建的一部分

有两种方法可以将jar添加为项目的一部分。 两种方式都在下面提到。

  1. 使用构建文件添加Jar:可以通过使用jar和版本作为依赖项,使用build.gradle或pom.xml之类的构建文件将jar添加到项目中。
  2. 从Jersey网站下载:上面提到的所有jar都是Jersey软件包的一部分,可以下载并复制粘贴到WEB-INF / lib。 下载Jars的链接 。

5.2 JAX-RS的配置

为了使用JAX-RS,我们必须将Jersey注册为REST请求的调度程序servlet。 我们必须将web.xml修改为以下几行。

泽西岛的Web.xml作为分派器servlet

<?xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>JAX-RS Application Demo</display-name><servlet><servlet-name>jersey-servlet</servlet-name><servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class><init-param><param-name>jersey.config.server.provider.packages</param-name><param-value>com.tutorial</param-value></init-param></servlet> <servlet-mapping><servlet-name>jersey-servlet</servlet-name><url-pattern>/rest/*</url-pattern></servlet-mapping>
</web-app>

web.xml有不同的标记,用于不同的目的。 display-name仅用于显示目的。 init-param标签用于初始化。 我们使用了一个参数jersey.config.server.provider.packages该参数定义了Jersey将针对服务类查找的软件包。 此处定义的包应包含服务类。 url-patter此标记用于定义URL模式。 默认情况下,URL的开头将是项目名称,后跟在此标记处定义的url-pattern。

6.3服务等级

服务类负责处理请求。 调度程序Servlet(在我们的示例中为Jersey)接收到请求后,该请求将根据URL路径传输到服务类。 服务类名称为HelloWorld.java

项目服务等级

package com.tutorial;import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;@Path("/hi")
public class HelloWorld
{@GET@Path("/{name}")public Response getMessage(@PathParam("name") String name){String outMsg = "Hello " + name + "!";return Response.status(200).entity(outMsg).build();}}

在上面的代码@Path针对URL路径定义。 因此,URL将包含项目名称,定义为web.xml一部分的url模式以及@Path注释支持的属性。 该请求将由调度程序servlet转移到此类。 @GET定义了HTTP方法的类型。 如果它包含带有这些{}括号的@Path参数,则这些参数称为@PathParam 。 在我们的情况下, name是路径参数。 您可以在服务级别以及方法级别定义路径。

6.4运行程序

为了运行该程序,需要一个Web服务器来运行Web服务。 对于我们的程序,我们使用了Apache Tomcat。

让我们创建一个war文件并将war部署在tomcat服务器上。 另外,我们可以将tomcat服务器与Eclipse集成在一起。 一旦Tomcat服务器与Eclipse集成在一起并且在服务器上部署了项目战,我们将获得以下屏幕。

Tomcat与Eclipse以及JAX-RS项目集成在一起

现在让我们启动tomcat服务器。

tomcat服务器启动后,我们将在浏览器中键入以下URL。

http:// localhost:8080 / JaxRsTutorial / rest / hi / Anand

请注意,URL首先包含项目名称,然后包含作为web.xml一部分提及的url模式,然后是服务路径,最后是路径参数,即名称。

以下屏幕将出现在浏览器中。

浏览器上的Web服务结果

7.下载Eclipse项目

这是使用Jersey的JAX-RS教程。

您可以在此处下载此示例的完整源代码: JaxRsTutorial.zip

翻译自: https://www.javacodegeeks.com/2018/04/jax-rs-tutorial-with-jersey-for-restful-web-services.html

带有Jersey的JAX-RS教程,用于RESTful Web服务相关推荐

  1. jersey tomcat MySQL_基于jersey和Apache Tomcat构建Restful Web服务(一)

    基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...

  2. RESTful Web 服务 - Java (JAX-RS)

    JAX-RS 表示用于 RESTful Web 服务的 Java API.JAX-RS 是一种基于 Java 的编程语言 API 以及为创建 RESTful Web 服务提供支持的规范.2.0 版本发 ...

  3. 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

    http://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/ 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务 Y ...

  4. restful web_泽西岛的RESTful Web服务

    restful web 我已经讨论了有关体系结构考虑事项<< link >>的早期文章,以成为可在我的系统/机器上使用的分布式环境上的RESTful系统. 本文我们将讨论如何基 ...

  5. 泽西岛的RESTful Web服务

    我已经讨论了有关体系结构注意事项<< link >>的早期文章,以成为可在我的系统/机器上使用的分布式环境上的RESTful系统. 本文我们将讨论如何基于REST体系结构考虑来 ...

  6. Spring3 RESTful Web服务

    Spring 3提供了对RESTful Web服务的支持. 在本教程中,我们将向您展示如何在Spring中实现RESTful Web服务 ,或者如何将现有的Spring服务公开为RESTful Web ...

  7. Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务-Eclipse和Maven项目

    开发Web服务的RESTful方法不断受到越来越多的关注,并且似乎正在将SOAP淘汰. 我不会讨论哪种方法更好,但是我相信我们都同意REST更轻量级. 在本教程中,我将向您展示如何使用RESTeasy ...

  8. Spring 3 RESTful Web服务

    Spring 3提供了对RESTful Web服务的支持. 在本教程中,我们将向您展示如何在Spring中实现RESTful Web服务 ,或者如何将现有的Spring服务公开为RESTful Web ...

  9. resteasy_Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务– Eclipse和Maven项目

    resteasy 开发Web服务的RESTful方法不断受到越来越多的关注,并且似乎正在将SOAP淘汰. 我不会讨论哪种方法更好,但是我相信我们都同意REST更轻量级. 在本教程中,我将向您展示如何使 ...

最新文章

  1. 一小时内在本地搭建 SAP Commerce Cloud(电商云)的前后台运行环境
  2. SVN:“SVN”不是内部命令,解决方法
  3. 读取字符串中的数字和小数
  4. 记一次AD域域管理员密码更改导致某系统群集管理器故障排查解决过程
  5. 一行命令直接拷贝ssh公钥到远程服务器
  6. 在Linux上安装Tomcat的完整指南
  7. int.Parse(),int.TryParse(),Convert.ToInt32(), (int)转换为数字类型方法简介
  8. Linux上卸载JDK
  9. Qt高级编程完整源码
  10. 微信科室预约挂号小程序
  11. python爬虫反虫之setcookie
  12. resultful风格接口
  13. nfc ntag21x ultralight 内存结构
  14. Hard link and soft link in Linux
  15. 求一个3*3矩阵对角线元素之和
  16. WinCC 7.0 用户归档+Listview控件 制作报表(一)
  17. oracle判断数据是否存在吗_oracle数据库判断表是否存在,存在删除,并创建新表...
  18. C - The Fair Nut and String
  19. 回转半径的计算公式_一种计算船舶回转半径的方法
  20. 三国现实主义的巅峰——贾诩

热门文章

  1. CHS-DRG医保支付(甘肃省庆阳市)分组解读第一篇:分组规则总述及MDCA篇
  2. 网摘_技能_IT_后端_存储_简单卷、跨区卷、带区卷、镜像卷和 RAID-5 卷 区别
  3. 数字藏品大开杀戒,如何保护好自己的钱包?
  4. 帝国CMS CentOS7 服务器搭建
  5. LaTeX论文自动化排版
  6. [转]半只香烟解读搜索引擎优化(SEO)知识完全手册(一)
  7. 内存条市场现状及未来发展趋势
  8. 安装虚拟机VMware出现黄色中断感叹号强制回滚【最全解决方案】6招解决(挥泪分享,本宝宝研究了一下午)
  9. HCIA 链路聚合与LACP
  10. FRED应用:LED手电筒模拟