jersey (RESTful Web Service框架)

简介: jersey是一个RESTful Web Service框架。web service即远程函数调用,通过该特性,在互联网中跨机器调用其他服务器上的函数,就像调用本地代码一样简单又方便。原理是框架把请求对象序列化为json形式的字符串,发送http请求到指定的服务器上,服务器端把json字符串再反序列化为对象,找到函数代码入口后开始执行,得到返回对象后序列化为json字符串,作为客户端htt

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类:
serviceResource类;
注意:每次根据@path找到的类,jersey都会自动new一个 新对象,所以想对一些成员变量保持不变的话可以把它们设置为static。

在WebContainer中配置

该地址为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 {
		省略
	}



目录
相关文章
|
1月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
23 0
|
9天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
4天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。
|
16天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
29天前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
9 0
|
30天前
|
JSON Java API
Springboot项目中如何设计一个规范的统一的Restful API 响应框架?
Springboot项目中如何设计一个规范的统一的Restful API 响应框架?
22 1
|
30天前
|
前端开发 API 网络架构
Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!
Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!
|
1月前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务
|
1月前
|
物联网 调度 开发者
构建高效Python Web应用:异步编程与Tornado框架解析
【2月更文挑战第27天】 在处理高并发的Web应用场景时,传统的同步阻塞模型往往难以满足性能需求。本文将深入探讨Python世界中的异步编程概念,并结合Tornado这一轻量级、非阻塞式Web服务器及框架,展示如何构建高性能的Web应用。通过实例驱动的方法论,我们将剖析Tornado的核心组件,包括其IOLoop、异步HTTP客户端和服务器端处理机制,以及与协程集成的细节。文章旨在为开发者提供一套实践指南,帮助他们利用Python实现快速响应和资源高效的Web服务。
28 2
|
1月前
|
设计模式 前端开发 API
简述 Python WEB 开发常用的框架有哪些?
【2月更文挑战第26天】【2月更文挑战第88篇】简述 Python WEB 开发常用的框架有哪些?