jersey 一起学习 1讲


restful 风格特征:
可寻址性(Addressability)
无状态性(Statelessness)
连通性(Connectedness)
统一接口(Uniform Interface)
面向资源(Resource Oriented)
超文本驱动(Hypertext Driven)
松耦合(Loosely Coupled)

REST风格架构的设计步骤:
规划数据集
将数据集划分为资源
使用URI为资源命名
将资源上的操作映射到4种HTTP方法
定义资源之间的关系
用超链接和表单将新的资源与已有资源关联起来
根据可能发生的出错情况,定义响应状态代码

=========================================================

jersey 相关资料地址
一.jersey官网:
   http://jersey.java.net/


二.jersey源码及其demo下载地址(注意最新版本为1.0):
   http://download.java.net/maven/2/com/sun/jersey/


三.jersey官网邮件讨论组
   http://n2.nabble.com/Jersey-f576304.html


四.jsr311规范官网
   http://jcp.org/en/jsr/detail?id=311


==============================================================

Rest Web Services

1》》 Representational State Transfer, 具象状态传输。

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)。



2》》  @注释说明
2.1 @Produces 表示返回的格式
@Produces( {MediaType.APPLICATION_XML })   表示返回的xml格式
@Produces( {MediaType.APPLICATION_JSON })  表示返回的json格式
@Produces( { MediaType.TEXT_PLAIN })  表示返回的纯文本格式
2.2 @ Consumes
@Consumes ( { application/x-www-form-urlencoded }) 窗体数据被编码为名称/值对

简单例子:


1 web.xml 文件修改:

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>com.bes.web.MyApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>


1 java代码:
package com.bes.web;

import com.sun.jersey.api.core.PackagesResourceConfig;

public class MyApplication extends PackagesResourceConfig {

public MyApplication() {
super("com.bes.jersey");
}

}


2 服务端webservice
package com.bes.jersey;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

@Path("helloworld")
public class HelloWorldResource {

@GET
@Produces("text/plain")
public String getChichedMessage(
@QueryParam("name") String name,
@QueryParam("country") String country
) {
StringBuilder builder = new StringBuilder();
builder.append("Hello world");
if (name != null) {
builder.append(",").append(name);
}

if (country != null) {
builder.append(" from ").append(country);
}
builder.append("!");
return builder.toString();
}

@POST
@Consumes("text/plain")
public void postChichedMessage() {
return;
}

}

可以通过 web页面调用uri 或者 通过 java代码进行调用。


最后直接上 工程源码:

查看附件。

猜你喜欢

转载自mojianpo.iteye.com/blog/1687513
今日推荐