jersey 深度揭秘,入门指南教程 系列1

jersey 是基于Java的一个轻量级RESTful风格的Web Services框架。
参考官网: https://jersey.java.net/
Maven项目使用原则如下:在pom.xml中加入:

<!-- Jersey -->
<dependency>
<groupId>org.glassfish.jersey.core</groupId><artifactId>jersey-client</artifactId><version>${jersey.version}</version>
</dependency>
<dependency><groupId>org.glassfish.jersey.containers</groupId><artifactId>jersey-container-servlet</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.media</groupId><artifactId>jersey-media-multipart</artifactId><version>${jersey.version}</version>
</dependency>

当然必不可少的,也需要使用Java EE的支持:

<!-- JAVA EE -->
<dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version><scope>provided</scope>
</dependency>

Jar包详解:

> jersey-client 是jersey提供的客户端包,封装了一些客户端操作的类 jersey-container-servlet
> 是jersey的核心,服务端必备包 jersey-media-moxy 是定义了jersry支持的常用的数据格式,json,xml都包括其中
> jersey-media-multipart 是jersey的上传文件的支持

配置
jersey 的使用,必须要有一个全局的配置类,这个类需满足以下条件:

@ApplicationPath 注解该类,并且在参数中指定相对路径继承 org.glassfish.jersey.server.ResourceConfig 类
该类构造方法中设置jersey的配置,比如指定接口的包路径
如下:

@ApplicationPath("/")
public class RESTServiceConfig extends ResourceConfig {public RESTServiceConfig() {packages("web.rest");register(MultiPartFeature.class);}
}

GET
GET例子:

@GET
@Path("/thing")
public String get() {return "thing";
}

POST
POST例子:

@POST
@Path("/add")
public Boolean add(@FormParam("name") String name) {// TODO savereturn true;
}

Param
jersey中有几种常用的接收参数的注解:

@PathParam 接收链接中参数,如”/xxx/{name}/”,@PathParm(“name”)
@QueryParam 接收链接中的普通参数,如”/xxx?name=ttt”,@QueryParam(“name”)
@FormParm 接收post提交中的表单参数
@FormDataParm 上传文件接收文件参数

json
开发中,json已经常用到无处不在了,jersey对json的支持很好。接收json,需要使用@Consumes,注解指定解压方式:
@Consumes(MediaType.APPLICATION_JSON)

返回json需要使用@Produces注解,指定压缩方式:
@Produces(MediaType.APPLICATION_JSON)

文件上传
示例:

 @POST@Path("import-excel")@Consumes(MediaType.MULTIPART_FORM_DATA)@Produces(MediaType.APPLICATION_JSON)public ImportResultBean importForExcel(@FormDataParam("file") String fileString,@FormDataParam("file") InputStream fis,@FormDataParam("file") FormDataContentDisposition fileDisposition) {// TODOreturn ;}

文件下载
文件下载需要将Response对象的压缩方式,指定为:

@Produces(MediaType.APPLICATION_OCTET_STREAM)

解密:Jersey 入门指南系列1相关推荐

  1. 51单片机入门指南系列:一、前期准备

    51单片机入门指南系列:一.前期准备 51单片机学习步骤 为什么我用的是52单片机,大家也说它是51? 编译环境 单片机入门书籍 购买实物开发板 51单片机学习步骤 51单片机是嵌入式学习的入门级芯片 ...

  2. 电子乐入门指南系列1

    如 果 听电音也算是电击疗法之一,那么相信这世界有无数人愿意选择头戴耳机安乐而死.贝尔发明电话的时候绝对不会想到,在他以后的一百多年历史中,电波可以通过 这样的方式传送,可以带出这样的效果,让人群闻之 ...

  3. Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  4. 猫都能学会的Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  5. java 视频转码工具类_JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)...

    JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇) 前言 再此章之前,我们已经详细介绍和剖析了javacv的结构和ffmpeg ...

  6. javaCV入门指南:序章

    javaCV入门指南系列: JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到<快速上手篇>) JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装 ...

  7. JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作?

    JavaCV入门指南系列: JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到<快速上手篇>) JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装 ...

  8. javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?

    JavaCV入门指南系列: JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到<快速上手篇>) JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装 ...

  9. NAO机器人入门指南(二):在Choregraphe使用Python

    在NAO机器人入门指南(一)中,我们安装并熟悉了choregraphe的基本界面,这次则介绍如何在在Choregraphe使用Python. 一.连接 二.创建指令盒 右键双击中间区域,创建pytho ...

最新文章

  1. 2017年实时更新系统hosts文件(不能访问时才会更新)不要用于非法行为 只供内部测试...
  2. shadow dom一个最简单的例子
  3. 转: javascript技术栈
  4. 【C/C++开发】C语言实现函数可变参数
  5. 分布式锁防止订单重复提交_防止表单重复提交看这里!!!
  6. 移动端手机火狐浏览器全屏插件
  7. 09_期望极大法EM1_统计学习方法
  8. 人要抱着希望才能活得好
  9. java内存模型—先行发生原则
  10. ActionForm工作原理
  11. LCD液晶拼接屏优势凸显受市场欢迎
  12. 计算机之父童年的故事教学设计,计算机之父童年的故事 教学设计
  13. MapReduce 的基本原理
  14. 今天是教师节,我也即将成为一名老师
  15. 服务器可以装win7或win10系统吗,win10改win7用legacy还是uefi?_网站服务器运行维护,window...
  16. 震惊,用过微粒贷的人没资格贷款买房!
  17. 3.css3深入,高级选择器浮动布局,html5/css3基础开始(推荐收藏)
  18. linux输入ll命令各个字段的含义
  19. 百度地图-设置地图最小、最大级别
  20. C++入门>>初识类

热门文章

  1. 根据歌曲评分播放歌曲
  2. 深度理解运放增益带宽积
  3. QeePHP中的基础知识点积累
  4. 十字路口待转区什么用_这个区域是干嘛用的?详解左转弯待转区规则
  5. StoreFile Compaction
  6. 人生下半场,我们都躲不过这7个真相
  7. virtio split ctrl virtqueue
  8. 三大物理引擎:PhysX、Havok和Bullet
  9. redisTemplate调用 increment()的ERR value is not an integer or out of range;
  10. 理解这两点,也就理解了paxos协议的精髓