`
tcxiang
  • 浏览: 89486 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Restful Jersey

 
阅读更多

 

REST 在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一。

REST 中最重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识。客户端应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集。RESTful Web 服务是使用 HTTP 和 REST 原理实现的Web 服务。通常,RESTful Web 服务应该定义以下方面:

  • Web 服务的基/根 URI,比如 http://host/<appcontext>/resources。
  • 支持 MIME 类型的响应数据,包括 JSON/XML/ATOM 等等。
  • 服务支持的操作集合(例如 POST、GET、PUT 或 DELETE)。

 

Jersey的四种行为

方法

HTTP 方法映射到资源的 CRUD(创建、读取、更新和删除) 操作。尽管您可以做一些小修改,比如让 PUT 方法变成创建或更新,但基本的模式如下:

  • HTTP GET:获取/列出/检索单个资源或资源集合。
  • HTTP POST:新建资源。
  • HTTP PUT:更新现有资源或资源集合。
  • HTTP DELETE:删除资源或资源集合。

方法/资源

资源集合; URI 如:
http://host/api/resources

成员资源; URI 如:
http://host/api /resources/123

对应的操作

POST

列出资源集合的所有成员。

检索标识为 1234 的资源的表示形式。

C(创建)

GET

使用一个集合更新(替换)另一个集合。

更新标记为 1234 的数字资源。

R(读取)

PUT

在集合中创建数字资源,其ID 是自动分配的。

在下面创建一个子资源。

U(更新)

DELETE

删除整个资源集合。

删除标记为 1234 的数字资源。

D(删除)

 

相关的架包结构

·      核心服务器:jersey-core.jar,jersey-server.jar,jsr311-api.jar,asm.jar

·      核心客户端:(用于测试)jersey-client.jar

·      JAXB 支持:(在高级样例中使用)jaxb-impl.jar,jaxb-api.jar,activation.jar,stax-api.jar,wstx-asl.jar

·      JSON 支持:(在高级样例中使用)jersey-json.jar

·      Spring支持:(在高级样例中使用)jersey-spirng.jar

元注解信息说明

生存周期说明

1.       默认不使用注解,表示生存周期等于request,请求过后自动销毁,默认是线程安全的。

2.       application,使用@Singleton注解。生存周期等于整个应用程序的生存周期。

3.       session,使用@PerSession注解。生存周期等于一个session请求,session销毁,该rest资源实例也同时销毁。

Bean注解说明

1.@Path
路径信息,表示映射出去的访问路径。
范例如下:@Path("/myResource")

2. @Produces
用于限制post和get方法返回的参数类型,支持json、string、xml、html
范例如下:@Produces({"application/xml", "application/json"})

3. @Consumes
用于限制输入的参数的类型,支持json、string、xml、html
范例如下:@Consumes("text/plain")

4. @QueryParam

通过request传入的参数,可以转换任何有以String为参数的构造函数的类。

5.@DefaultValue
@DefaultValue表示默认参数。
范例如下:@DefaultValue("2") @QueryParam("step")        int step,

5. @PathParam 
@ MatrixParam,@ HeaderParam,@ CookieParam和@ QueryParam FormParam听从以相同的规则。 
@ MatrixParam提取URL路径段的信息。 @ HeaderParam提取的HTTP头信息。 @ CookieParam提取信息的Cookie饼干宣布相关的HTTP标头。
@ FormParam略有特殊,因为它提取请求表示,该类型匹配前面的@Consumes所声明的类型。

范例如下:

  @POST

  @Consumes("application/x-www-form-urlencoded")

  public void post(@FormParam("name")   String name) {

6.pojo层面等相关注解,@XmlRootElement,支持JPA注解。

7.Spring相关注解,比如@Autowired(required=true@Qualifier("persionDao")@Component

@Scope("request")

 

 

//输出json中JSONObject或JSONArray的名字
@XmlRootElement(name="rootclass")
public class Bean {

	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<display-name>RESTfulWS</display-name> 
	<servlet> 
		<servlet-name>Jersey REST Service</servlet-name> 
		<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
		<init-param> 
			<param-name>com.sun.jersey.config.property.packages</param-name> 
			<param-value>com.hiekn.poa.service</param-value> 
		</init-param> 
		<load-on-startup>1</load-on-startup> 
	</servlet> 
	<servlet-mapping> 
		<servlet-name>Jersey REST Service</servlet-name> 
		<url-pattern>/ws/*</url-pattern> 
	</servlet-mapping> 
	
  	<welcome-file-list>
    	<welcome-file>index.html</welcome-file>
  	</welcome-file-list>
</web-app>

 

@Path("rs")
public class TestService {

	@GET
	@Path("/hello1/{name}")
	@Produces("application/json;charset=UTF-8")
	public String sayHello(@PathParam("name") String name) {
		return "Hello, ".concat(name);
	}

	@GET
	@Path("/hello2/{name}")
	@Produces("application/json;charset=UTF-8")
	public Bean sayHello2(@PathParam("name") String name) {
		Bean b = new Bean();
		b.setUsername(name);
		b.setPassword("mlgb");
		return b;
	}
	
	@GET
	@Path("/hello3/{name}")
	@Produces("application/json;charset=UTF-8")
	public List<Bean> sayHello3(@PathParam("name") String name) {
		List<Bean> rsList = new ArrayList<Bean>();
		Bean b = new Bean();
		b.setUsername(name);
		b.setPassword("mlgb");
		rsList.add(b);
		return rsList;
	}
	
	@GET
	@Path("/hello4")
	@Produces("application/json;charset=UTF-8")
	public List<Bean> sayHello4(@QueryParam("username") String username, @QueryParam("password") String password) {
		List<Bean> rsList = new ArrayList<Bean>();
		Bean b = new Bean();
		b.setUsername(username);
		b.setPassword(password);
		rsList.add(b);
		return rsList;
	}
	
}

 

分享到:
评论

相关推荐

    RESTful Jersey Demo

    RESTful Jersey Demo RESTful Jersey Demo RESTful Jersey Demo

    jersey restful webservice集成以及使用

    **标题:“jersey restful webservice集成以及使用”** RESTful Web服务是一种广泛采用的Web服务设计风格,它遵循 Representational State Transfer(表述性状态转移)原则,通过HTTP协议提供服务。Jersey是Java...

    Restful示例

    Restful Jersey实现 java 参考学习页面 http://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/ 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

    Jersey入门实例--很好

    【标题】"Jersey入门实例--很好"指出的是一个关于Jersey框架的基础教程,适合初学者使用,通过导入到MyEclipse开发环境中,可以轻松学习并实践RESTful服务的创建。这个实例包括了服务端和客户端的实现,帮助开发者...

    jersey 实现restful服务

    本教程将重点讲解如何使用Jersey框架来实现RESTful服务。 Jersey是Java语言中一个非常流行的实现RESTful服务的开源库,它是JAX-RS(Java API for RESTful Web Services)规范的一个参考实现。JAX-RS提供了一套标准...

    基于restful框架jersey

    ### 基于RESTful框架Jersey的知识点详解 #### 一、Jersey RESTful框架简介 Jersey RESTful框架是一款开源的RESTful框架,它实现了JAX-RS(JSR 311 & JSR 339)规范。JAX-RS是一种Java API,用于开发RESTful web...

    构建 jersey+restful 所需JAR包

    【标题】:“构建 Jersey+RESTful 所需 JAR 包” 在开发基于Java的RESTful Web服务时,Jersey是一个常用的实现框架。RESTful(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,主要基于...

    RESTful最佳实践之基于 jersey 的增删改查

    本实践指南将聚焦于如何基于Java的Jersey框架实现RESTful服务,探讨相关的技术和最佳实践。 首先,让我们理解REST的基本概念。REST定义了一组约束条件,这些约束使得系统更加简单、可伸缩,并且符合Web的工作方式。...

    构建Restful Web服务-jersey

    【标题】:“构建Restful Web服务-jersey” 在Web开发中,RESTful API已经成为构建分布式系统和服务之间交互的重要方式。Jersey是Java语言中实现RESTful架构风格接口的一个开源框架,它基于JAX-RS(Java API for ...

    Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用

    "Eclipse中使用Jersey和Tomcat构建RESTful WebService及其调用" RESTful Web服务简介 ----------------- RESTful Web服务是使用HTTP和REST原理实现的Web服务。REST 中最重要的概念是资源(resources),使用全球ID...

    Jersey Restful Webservice

    ** Jersey RESTful Web服务** RESTful(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,强调简洁和层次化的资源访问。而Jersey则是Java领域中实现RESTful API的主流框架...

    jersey RESTful service 源代码

    jersey RESTful service 源代码 jersey RESTful service 源代码

    jersey实现restful简单实例

    【jersey实现RESTful简单实例】 Jersey是Java平台上的一个开源框架,专门用于构建RESTful Web服务。REST(Representational State Transfer)是一种轻量级的、基于HTTP协议的架构风格,广泛应用于Web应用程序和API...

    java+restful+Jersey+webservice 远程调用

    在Java世界中,实现RESTful服务的一个常用框架就是Jersey。 Jersey是Sun Microsystems(现已被Oracle收购)开发的开源项目,它是JAX-RS(Java API for RESTful Web Services)规范的参考实现。JAX-RS为创建RESTful...

    jersey restful webservice 所需包2.22版

    Jersey 是一个开源的 RESTful Web 服务客户端和服务器实现,它是 Java API for RESTful Web Services (JAX-RS) 规范的一个实现。JAX-RS 是 Java 平台上用于构建 RESTful 服务的标准接口,它使得开发人员能够轻松地...

    jersey和jetty的restful服务程序

    本示例将深入探讨如何使用Jersey和Jetty构建一个RESTful服务程序。Jersey是Java平台上的一个开源框架,用于实现 Representational State Transfer (REST) API,而Jetty则是一个轻量级的嵌入式Servlet容器,常被用来...

    Jersey RESTful Web services

    Jersey is the open source (under dual CDDL+GPL license), production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services. But, it is also more than the Reference ...

    maven +Jersey Restful实现源码

    【 Maven + Jersey 实现 RESTful 服务详解】 在软件开发中,Maven 是一个强大的项目管理工具,它帮助开发者管理依赖、构建项目以及执行各种生命周期阶段。而 Jersey 是 Java 容器中的一个轻量级框架,用于实现 ...

    spring4+myabtis3+jersey(restful风格的webservice)

    本项目基于Spring4、MyBatis3和Jersey构建了一个RESTful风格的Web服务框架,旨在提供高效、灵活且易于维护的API接口。RESTful架构是一种面向资源的Web服务设计风格,强调简洁、统一的接口,使得客户端与服务器之间的...

    RESTful Web 服务 Jersey使用

    Jersey是Java语言中实现RESTful API的开源框架,它提供了丰富的API来帮助开发者轻松创建和消费RESTful服务。 在使用Jersey构建RESTful Web服务时,首先需要理解以下几个核心概念: 1. 资源(Resource):在RESTful...

Global site tag (gtag.js) - Google Analytics