java rest jersey 分享

Jersey知识分享 

· 博客分类:

· 工具应用

java rest jersey 分享 

公司最近要使用rest,本文是本人业务时间整理归纳,内部同事之间知识分享使用。

jersey具体的操作以及相关案例代码在http://xosadan.iteye.com/blog/1119235

有更加详细的描述以及下载。

RESTful Web服务简介

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的四种行为

对应我们日常说的CRUD.

方法/资源

资源集合; 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,用于限制postget方法返回的参数类型,支持jsonstringxmlhtml
范例如下:@Produces({"application/xml", "application/json"})

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

4. @QueryParam@DefaultValue通过request传入的参数,@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")

 

 

 


你可能感兴趣的:(java,jersey,分享)