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

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

就像在亚洲运行的应用程序向在欧洲运行的应用程序提供数据一样,反之亦然。 在美国托管的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java swing 打开文件_java swing实现打开Excel文件并进行处理

这里选择Excel文件是业务需要&#xff0c;话不多说1、引入对Excel处理的相关依赖org.apache.poipoi3.16org.apache.poipoi-ooxml3.162、进行swing的相关布局代码&#xff1a;package com.mozarta;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.xssf.usermodel…

java的对象对象映射_Java对象到对象映射器

java的对象对象映射我在该项目上使用了Dozer一段时间。 但是&#xff0c;最近我遇到了一个非常有趣的错误&#xff0c;这促使我环顾四周&#xff0c;并尝试使用其他“对象到对象”映射器。 这是我找到的工具列表&#xff1a; 推土机&#xff1a;推土机是Java Bean到Java Bea…

java parallelstream_关于Java8 parallelStream并发安全的深入讲解

背景Java8的stream接口极大地减少了for循环写法的复杂性&#xff0c;stream提供了map/reduce/collect等一系列聚合接口&#xff0c;还支持并发操作&#xff1a;parallelStream。在爬虫开发过程中&#xff0c;经常会遇到遍历一个很大的集合做重复的操作&#xff0c;这时候如果使…

使用Google Cloud Storage托管您的Maven工件

如果您使用Google Cloud并将Java用于项目&#xff0c;那么Google Cloud Storage是托管团队工件的理想场所。 它很容易设置&#xff0c;而且很便宜。 如果您对它们的功能不特别感兴趣&#xff0c;那么它比设置现有存储库选项&#xff08;jfrog&#xff0c;nexus&#xff0c;arc…

java+map对象判断空值_java判断map中是否存在指定对象

Map判断是否包含指定的value使用containsValue方法。(推荐&#xff1a;java视频教程)定义containsValue(Object value) 如果此映射将一个或多个键映射到指定值&#xff0c;则返回 true示例&#xff1a;/**** Map集合判断是否包含value**/public class MapDemo{public static vo…

excel查重复_毕业季 | 如何降低论文的查重率

毕业季吾日三省吾身实验做完了吗&#xff1f;论文写完了吗&#xff1f;查重能通过吗&#xff1f;学术圈的前辈告诉我们&#xff0c;只有站在巨人的肩膀上才能看得更远。在撰写一篇论文时&#xff0c;为保证质量和可靠性&#xff0c;难免需要引用前人的成果&#xff0c;这也反映…

Java,JavaFX的流畅设计风格进度栏

按照承诺&#xff0c;刚刚发布的Java JavaFX主题JMetro 4.6版为进度栏带来了新样式。 进度栏有两种可能的状态&#xff1a;确定和不确定&#xff0c;新的JMetro版本具有这两种状态。 在本文中&#xff0c;我还将详细介绍一些我在JMetro中遵守的API设计原则。 JMetro API设计原…

安卓最新系统_成纺移动校园(移动办公系统)V3.2.1 安卓最新版

成纺移动校园(移动办公系统)是额一个非常实用的办公工具。您可以使用该软件及时浏览最新的校园信息&#xff0c;同时涵盖许多功能&#xff0c;例如时间表查询&#xff0c;会议安排&#xff0c;校园地图&#xff0c;校车等。有需要的用户欢迎来绿色先锋网下载。 成纺移动校园简介…

pyqt 获取 UI 中组件_你想知道的React组件设计模式这里都有(上)

本文梳理了容器与展示组件、高阶组件、render props这三类React组件设计模式往期回顾&#xff1a;HBaseCon Asia 2019 Track 3 概要回顾随着 React 的发展&#xff0c;各种组件设计模式层出不穷。React 官方文档也有不少相关文章&#xff0c;但是组织稍显凌乱&#xff0c;本文就…

typora导出word指定样式_(二)最简洁的Markdowd编辑器:Typora

&#xff08;提醒&#xff1a;前面都是介绍和语法&#xff0c;想下载了就能用的直接看最后总结&#xff09;大家好&#xff0c;半瓶醋同学又来误人子弟了。现在办公文档或者邮件的处理&#xff0c;一般都是用微软的office word或者邮件自带的编辑器。但是用word或者邮件自带编辑…

使用数据库中的Java流制作数据透视表

来自数据库行和表的原始数据不能为人类读者提供太多了解。 相反&#xff0c;如果我们对数据执行某种聚合&#xff0c;则人类更有可能看到数据模式 在展示给我们之前。 数据透视表是聚合的一种特定形式&#xff0c;我们可以在其中应用排序&#xff0c;求平均值或求和之类的操作…

asynchttpclient 超时_dnf这才是混子的毕业套装,却发现超时空漩涡不买账!

dnf这才是混子的毕业套装&#xff0c;却发现超时空漩涡不买账&#xff01;按道理来说&#xff0c;光兵和帕拉丁穿这套装备去混团是最好的&#xff0c;结果现在超时空漩涡不要&#xff01;虽然说兵法套是95最好的魂之涛&#xff0c;但是这个混子套属性真心弱爆&#xff0c;不如正…

win7亮度怎么调_揭秘极米NEW Z8X投影仪怎么样?千万不要上当?!!!!【揭秘反馈

反馈测评极米NEW Z8X投影仪怎么样?求真实点评注意事项极米NEW Z8X投影仪怎么样?靠谱真实回答 外形外观&#xff1a;简约时尚大气&#xff0c;手感不错&#xff01;\n投影亮度&#xff1a;1080P、4K&#xff0c;都能做到&#xff01;\n投影色彩&#xff1a;非常好&#xff0c;…

Paw 百度ai_直面落地!百度EasyDL产业智能创新大赛成果覆盖能源、交通、水利民生重业...

物体检测模型实现高压线路隐患检测、图像分类实现短视频快速剪辑和量产、文本情感分类辅助潜在心理疾病患者自发检测、图片识别车辆轮轴数监管车辆载重……每一个创想都能简单快速实现&#xff0c;没有AI开发基础的小伙伴们也能做到&#xff01;这一切都缘于百度零门槛AI开发平…

Java 9、10及更高版本:Java平台的未来

您紧跟Java平台新功能的秘密武器 自去年9月发布Java 9以来&#xff0c;感觉整个平台都经历了重大变化。 在我们甚至无法确定Java 9所能提供的一切之前&#xff0c;我们已经在标记Java 10的发布。现在&#xff0c;我们已经开始期待Java 11在2018年9月发布。 Oracle决定为Java平…

c fread 快读 详解_奔驰ACC(自适应巡航系统)详解

什么是ACC自适应巡航&#xff1f;ACC自适应巡航( Adaptive Cruise Control )&#xff0c;又可称为智能巡航控制系统&#xff0c;简称ACC系统&#xff0c;它是在传统巡航控制基础上发展起来的新一代汽车驾驶员辅助驾驶系统。它将汽车自动巡航控制系统CCS 和车辆前向撞击报警系统…

php使用邮件找回密码,php利用Zend_Mail发送邮件(实现邮件重设密码功能)

[php]代码库<?php include_once conn/conn.php;require_once Zend/Mail.php;//调用发送邮件的文件require_once Zend/Mail/Transport/Smtp.php;//调用SMTP验证文件$reback 0;$name $_GET[foundname];$question $_GET[question];$answer $_GET[answer];$sql "sele…

_Linux 最常用命令整理,建议收藏!

Linux是目前应用最广泛的服务器操作系统&#xff0c;基于Unix&#xff0c;开源免费&#xff0c;由于系统的稳定性和安全性&#xff0c;市场占有率很高&#xff0c;几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码&#xff0c;还可以安装在各…

hadoop可以解决什么问题_快速解决皮带机轴磨损问题可以这样做

皮带机是皮带输送机的简称&#xff0c;皮带机运用输送带的连续或间歇运动来输送各种轻重不同的物品&#xff0c;既可输送各种散料&#xff0c;也可输送各种纸箱、包装袋等单件重量不大的件货&#xff0c;用途广泛。皮带机运行时轴磨损是一个很常见的设备问题&#xff0c;某企业…

dbassit 包_CELINE新包,篮子包、圆盒包、腋下包、托特包等

CELINE 2021春夏女装系列以纪录片形式发布&#xff0c;由创意总监 Hedi Slimane 执导并设计配乐&#xff0c;在摩纳哥路易二世体育场取景。CELINE 2021春夏时装秀本季作品以「一代人的肖像」为题&#xff0c;在复古优雅中融入富有街头感的运动元素。CELINE 2021春夏时装秀女孩们…