您的位置:首页 > 编程语言 > Java开发

MyEclipse开发REST Web Service

2016-01-25 11:44 656 查看
-基本开发环境-

操作系统:Windows7 64位

开发工具:MyEclipse Professional 2014

J2EE版本:JavaEE 6 version

服务器:Tomcat 8.X

JDK:1.6

JAX-RS:1.1

- 名词解释-

JAX-RS:JAX-RS是JAVA EE6 引入的一个新技术。 JAX-RS即Java API for
RESTful Web Services。

Jersey:Jersey
是 JAX-RS 的参考实现,它包含三个主要部分:核心服务器、核心客户端、集成(集成Spring、Guice)。

Jackson:可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象(简单易用性能高)。

json-lib:可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。

-创建Rest Web Service 项目-



然后一路下点。

-创建Rest Web Service-

在创建Rest
Web Service的时候你将创建一些必须的用于管理的类,包括一个实体类和一个资源方法的类。

创建实体类:



修改其中的代码

package com.myeclipseide.ws;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Customer {
private int id;
private String name;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
注:在这里我们使用的是XML序列化格式,因此使用的是@XMLRootElement注解

创建Web Service的核心类-资源类







字段注释:

URL path:指明资源可以到达的路径,这里我们使用customers,因为这个资源管理的是customers
list。这个资源将被定位在“/customers”。



Singleton Lifecycle:保证每一个web-application的Jersey只能创建一个类实例。

Consumes and Produce:用于指定resource接受和产生的默认的MIME类型的数据。但是这些值能够被类中的个别方法覆盖重写。因为之前我们选择的是application/xml的MIME类型,所以我们选择XML序列化。

为资源类添加方法
点击上一步的Add方法。添加资源类的方法。



继续添加方法



字段解释:
{id}:指定资源的方法到达的地址/customers/{id},大括号表示的是URI变量。
Method parameters:在这里你要使用的是URI路径上的id的值,因此在这里要使用PathParam注解将id的值匹配给资源类中的cId变量。
添加完方法后:



- 为生成的资源类方法提供实现 -

这个例子的实现很简单,当customers收到一个请求的service的时候,你就个实体类一个基础计数器ID,并将它加入map中。
package com.myeclipseide.ws;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;
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 com.sun.jersey.spi.resource.Singleton;
@Produces("application/xml")
@Path("customers")
@Singleton
public class CustomersResource {
private TreeMap<Integer, Customer> customerMap = new TreeMap<Integer, Customer>();
public CustomersResource() {
// hardcode a single customer into the database for demonstration
// purposes
Customer customer = new Customer();
customer.setName("Harold Abernathy");
customer.setAddress("Sheffield, UK");
addCustomer(customer);
}
@GET
public List<Customer> getCustomers() {
List<Customer> customers = new ArrayList<Customer>();
customers.addAll(customerMap.values());
return customers;
}
@GET
@Path("{id}")
public Customer getCustomer(@PathParam("id") int cId) {
return customerMap.get(cId);
}
@POST
@Path("add")
@Produces("text/plain")
@Consumes("application/xml")
public String addCustomer(Customer customer) {
int id = customerMap.size();
customer.setId(id);
customerMap.put(id, customer);
return "Customer " + customer.getName() + " added with Id " + id;
}
}
- 部署Web
Service项目 -

  在这里一笔带过。
- 测试Rest Web Service项目 -

在浏览器中打开 http://localhost:<port>/<project name>/jaxrs/<your url
path>/0 



后续:部分参考来自-http://www.myeclipsecn.com/learningcenter/web-services/rest-web-services-tutorial/ http://www.ibm.com/developerworks/cn/web/wa-jaxrs/ http://www.ibm.com/developerworks/cn/webservices/1102_mace_restservicePart3/1102_mace_restservicePart3.html http://www.ibm.com/developerworks/cn/webservices/1008_sucb_webservicesdevel/ http://www.importnew.com/8939.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: