Jersey 入门案例

Jersey 入门案例

简介

最近公司项目一直在用Restful 进行开发,我们使用的框架是Jersey框架,所以分享出来与大家一起学习。
具体RESTful的介绍,网上有很多资料,成熟的框架也很多,大家可以去网上查找,这里就不过多介绍。
Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。尽管相对年轻,它已经是一个产品级的 RESTful service 和 client 框架。
API地址 https://jersey.java.net/apidocs/latest/jersey/index.html
Jersey有以下优点:

  • 轻量级,快速开发
  • 优秀的文档和案例
  • 与Spring较好的集成
  • 可以集成到其它库/框架 (Grizzly, Netty)

快速入门

本章主要用于完成Jersey框架的Hello World项目。通过该项目可以使第一次解除Jersey框架的朋友,对Jersey框架有一个整体的了解。

系统要求

本次项目使用与Grizzly集成的Jersry框架,使用的java版本为JDK1.8。

Maven依赖

项目需要使用到的Maven依赖有Jersey依赖、Spring依赖、Jersey与Spring整合依赖
具体的Pom文件内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.lx</groupId>
  <artifactId>chapter1-1</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>chapter1-1 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <!--设置参数-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <!--jersey版本-->
    <jersey.version>2.21</jersey.version>
  </properties>
  <dependencies>
    <!-- Jersey 依赖 -->
    <dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-servlet-core</artifactId>
      <version>${jersey.version}</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.media</groupId>
      <artifactId>jersey-media-moxy</artifactId>
      <version>${jersey.version}</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.ext</groupId>
      <artifactId>jersey-bean-validation</artifactId>
      <version>${jersey.version}</version>
    </dependency>
    <!-- Jersey + Spring 整合包-->
    <dependency>
      <groupId>org.glassfish.jersey.ext</groupId>
      <artifactId>jersey-spring3</artifactId>
      <version>${jersey.version}</version>
      <!--排除jersey spring 整合中带的spring 依赖-->
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!--引入 Spring  依赖 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.2.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.2.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.2.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.2.1.RELEASE</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>chapter1-1</finalName>
  </build>
</project>

基本项目结构

这里写图片描述
整体项目结构就是一个普通的Maven web项目,资源包用于编写RESTful服务。

web.xml配置文件

web.xml配置文件主要用于读取Spring的配置文件,设置Jersey使用的Servlet等内容。
具体内容如下:
这里写图片描述

Hello World服务

  • 列表项为了便于理解,我们将服务所在的包命名为xxx.resource,也即为资源包。
    -创建HelloResource类,对于提供服务的类,Jersey框架不需要继承任何类或者实现任何接口,也即普通的java类即可。
    @Path注解表示该服务的访问路径,Jersey支持强大的注解开发,具体常用的注解会在后面章节进行介绍。
    这里写图片描述

启动测试

将项目放到Tomcat下运行。
对于Jersey提供的RESTful服务有两种测试方式,
一种是访问http://localhost:8080/application.wadl,看到如下页面,表示服务提供成功。
这里写图片描述
另一种是访问http://localhost:8080/hello/hello,看到返回hello表示服务提供成功
这里写图片描述

web.xml文件另一种编写方式

前面介绍的web.xml的配置方式,是初始化Jersey 使用的Servlet时,声明提供服务的资源包所在的位置。如果对应的资源包较多,或者后期使用到过滤器等组件时,现在的配置方式就不能满足使用需求了,所以在开发中博主推荐使用下面的方式进行配置。

  1. 编写程序入口Application类
    相对于资源类不需要继承或者实现不同,Application需要继承ResourceConfig类,并在该类初始化时,声明服务所在的资源包,具体代码如下
    这里写图片描述
    ApplicationPath表示该程序入口对应的路径。类似于Servlet在web.xml中配置 的路径。
  2. web.xml中配置程序入口
    web.xml中的改变,只需要调整下初始化Servlet时,初始化参数即可,由原来的配置资源包位置,调整为现在的配置程序入口,也即Application类。
    这里写图片描述
  3. 测试
    具体的测试方式和前面的介绍的测试方式一致。

使用Grizzly启动服务

前面介绍项目的启动方式是通过Tomcat启动服务,项目正式上线时需要使用该方式启动,但是我们在开发过程中,每次都使用Tomcat的相对较为麻烦,由于我们使用的是与Grizzly集成的Jersey框架,所以我们可以使用Grizzly来自动服务。

  1. 引入依赖
    使用Grizzly启动服务,需要多引入三个依赖.
    这里写图片描述
  2. 编写Main方法
    注意图片中的红色提示,确保导包正确。
    这里写图片描述
  3. 测试
    启动该Main方法,正常启动会报以下提示,之后按照上面介绍的方式测试即可。
    这里写图片描述

到现在我们Jersey的入门Hello World程序已经全部介绍完成。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值