jersey是一个RESTful Web Service框架。web service即远程函数调用,通过该特性,在互联网中跨机器调用其他服务器上的函数,就像调用本地代码一样简单又方便。原理是框架把请求对象序列化为json形式的字符串,发送http请求到指定的服务器上,服务器端把json字符串再反序列化为对象,找到函数代码入口后开始执行,得到返回对象后序列化为json字符串,作为客户端http请求的回应返回,客户端再将结果反序列化为对象。至此,完成一次远程调用。虽然细节上比较麻烦,但框架会帮我们封装好细节,并且总体上看好处是显而易见的——把服务分布在不同的机器上有利于负载均衡,该请求还是无状态的,对于此次请求的处理不依赖于上一次的状态。

获取jar

<!-- pom.xml的依赖部分 -->
<dependencies>
<span style="white-space:pre"> </span><dependency><groupId>org.glassfish.jersey.containers</groupId><artifactId>jersey-container-servlet</artifactId><version>2.5</version></dependency><dependency><groupId>org.glassfish.jersey.media</groupId><artifactId>jersey-media-json-jackson</artifactId><version>2.5</version></dependency>
</dependencies>

常用类

org.glassfish.jersey.server. ResourceConfig
用来绑定resource,代表着WebService的类。

ResourceConfig org.glassfish.jersey.server.ResourceConfig. register(Class<?> componentClass)
用来绑定resource的函数。

代码

app类:
package com.likeyichu.webservice;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig;
public class App extends ResourceConfig {
public  App() {
//向jersey框架注册资源类,凡完全限定名是以指定字符串开头的类,都将包含
packages("com.likeyichu.webservice");
register(JacksonFeature.class);
}
}
serviceResource类;
package com.likeyichu.webservice;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
@Path("animal")
public class Animal {
public String species,name;
public int age;
public static Animal animal=new Animal();
@GET
@Path("{species}")
@Produces(MediaType.APPLICATION_JSON)
public Animal wsAnimal(@PathParam("species") String species,
@QueryParam("name") String name,
@QueryParam("age") int age
){
animal.species=species;
animal.name=name;
animal.age=  age==0?2:age;
return animal;
}
}
注意:每次根据@path找到的类,jersey都会自动new一个 新对象,所以想对一些成员变量保持不变的话可以把它们设置为static。

在WebContainer中配置

https://jersey.java.net/documentation/latest/deployment.html#deployment.appservers
该地址为jersey官方文档。
用Tomcat作HttpServer
web.xml配置,让Tomcat读取
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><!-- 自己定名字,随便取 --><servlet-name>jerseyws</servlet-name><servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class><init-param><param-name>javax.ws.rs.Application</param-name><!-- 自己的继承了ResourceConfig的类名 --><param-value>com.likeyichu.webservice.App</param-value></init-param><!-- 指定这个“jerseyws” Servlet被tomcat加载的顺序 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>jerseyws</servlet-name><!-- 如果项目名为ABC,那么www.abc.com/ABC/*的请求都会被jersey框架处理--><url-pattern>/*</url-pattern></servlet-mapping>
</web-app>

效果

json反序列化到形参

public class UrlRequest {private String url;public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}
}
@Path("post")@POST@Produces(MediaType.APPLICATION_JSON)@Consumes(MediaType.APPLICATION_JSON)  //因为这行,urlResponseFun2()的形参request会被jersey注入//注意请求的头部必须有 ContentType:application/json  否则tomcat会报错public UrlResponse urlResponseFun2 ( UrlRequest request) throws IOException {省略}

jersey (RESTful Web Service框架)相关推荐

  1. 【转】Spring 4.x实现Restful web service

    http://my.oschina.net/yuyidi/blog/352909 首先我们还是跟之前一样,创建一个maven项目,不过因为Spring Restful web service是基于Sp ...

  2. 使用JAX-RS创建RESTful Web Service

    guice resteasy http://www.cnblogs.com/ydxblog/p/7891224.html http://blog.csdn.net/withiter/article/d ...

  3. java 创建restful_使用Java创建RESTful Web Service

    [RESTful Web Service是轻量级的service,可以通过HTTP的方式来实现对后台数据库的CRUD,在Web开发和移动开发时使用的比较广泛,非常方便.在Java世界里, JAX-RS ...

  4. Java RESTful Web Service实战(第2版)

    Java核心技术系列 Java RESTful Web Service实战 (第2版) 韩陆 著 图书在版编目(CIP)数据 Java RESTful Web Service实战 / 韩陆著. -2版 ...

  5. Java RESTful Web Service实战

    编者按: InfoQ开设栏目"品味书香",精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大家关注.本文节选自韩陆著<Java RESTful Web Servi ...

  6. JAX-RS 方式的 RESTful Web Service 开发

    2019独角兽企业重金招聘Python工程师标准>>> Web Service 目前在风格上有两大类,一个是基于 SOAP 协议,一个是完全遵循 HTTP 协议规范的RESTful  ...

  7. WCF实现RESTFul Web Service

    共同学习了前面一些概念,终于开始正题了哈.RESTful的Web Service调用直观,返回的内容容易解析.这里先会描述一个简单的场景--Web Service提供一个方法来搜索个人信息,传入人名, ...

  8. spring3创建RESTFul Web Service

    spring 3支持创建RESTFul Web Service,使用起来非常简单.不外乎一个@ResponseBody的问题. 例如:后台controller: 做一个JSP页面,使用ajax获取数据 ...

  9. Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service...

    起步 参照这一系列的另外一篇文章: Apache CXF实现Web Service(2)--不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 首先 ...

最新文章

  1. Mybatis获取参数值的方式
  2. vue 中实现异步加载模块
  3. BaiduSitemap
  4. Windows远程桌面
  5. python 读写函数
  6. AtCoder AGC043C Giant Graph (图论、SG函数、FWT)
  7. python消息中间件有哪些_消息中间件选型
  8. 组态软件基础知识概述
  9. JdbcTemplate查询返回JavaBean的几种方法
  10. [渝粤教育] 西南科技大学 经济法概论 在线考试复习资料2021版(2)
  11. curl get请求_PHP 请求该用 cURL 还是 Guzzle ?
  12. 双系统移动硬盘备份方案:macOS Catalina 10.15.5, Win10
  13. nexus6 android 6.0 root,全网首发:一键ROOT大师ROOT Nexus 6
  14. 如何给澳洲路局写信refound罚金,遇到交通罚款怎么办
  15. 重磅出炉!KCon 黑客大会 2019 演讲议题正式公布
  16. 机器人硬汉 聆听_第268章 百拳机器人
  17. 从VISTA到WIN 7 揭秘全球软件开发模式的变迁
  18. 抓住那头牛(BFS广搜)
  19. 安利几本好看的书给你
  20. 利用slf4j+log4j将日志写入指定的文件中

热门文章

  1. 非J2EE部署解决方案
  2. 爬取智联招聘上24座热门城市中Java招聘信息
  3. 医学图像处理和深度学习入门
  4. 有趣的面试题 int a = 0; a = a++;
  5. 2019年秋季学期实验室安全考试2
  6. linux系统是什么意思
  7. 安卓笔记:修正Task ‘wrapper‘ not found in project
  8. 【IIS音频传输】1、认识IIS
  9. 学生上课考勤系统jsp_jsp+ssm+mysql课堂考勤系统
  10. nodejs 前端生成csv 直接下载记录