您的位置:首页 > 其它

使用 jersey构建RESTful的WebService

2014-08-28 11:23 295 查看
jersey的依赖包

核心服务器: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

Bean注解说明

@Path,路径信息,表示映射出去的访问路径。

@Path("/myResource")

@Produces,用于限制post和get方法返回的参数类型,支持json、string、xml、html

@Produces({"application/xml", "application/json"})

@Consumes,用于限制输入的参数的类型,支持json、string、xml、html

@Consumes(MediaType.APPLICATION_XML)这里可以以数组形势支持多个参数

@QueryParam,@DefaultValue,通过request传入的参数,@DefaultValue表示默认参数。

@DefaultValue("2") @QueryParam("step") int step,默认为step=2

@QueryParam指在URI的?中传入的参数,如www.xxx.com/user/dept?id=1。那么@QueryParam("id")获取的参数就是id=1

@PathParam 在path路径中传入的参数,如www.xxx.com/user/1。那么@PathParam(“id")=1

@ FormParam即为通过post传入的参数,比如表单中的数据

@ MatrixParam,@ HeaderParam,@ CookieParam和听从以相同的规则。

@ MatrixParam提取URL路径段的信息。

@ HeaderParam提取的HTTP头信息。

@ CookieParam提取信息的Cookie饼干宣布相关的HTTP标头。

@POST

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

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

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

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

@Scope("request")

@Path("category")
public class CategoryService {

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<Category> getCategory() {
List<Category> list = new ArrayList<Category>();
list.add(new Category(1, "No.1 category"));
list.add(new Category(2, "No.2 category"));
return list;
}

@GET
@Path("{id}")
public Category getCategory(@PathParam("id") int id) {
return new Category(id, "id is " + id);
}

@GET
@Path("json/{id}")
@Produces(MediaType.APPLICATION_JSON)
public JSONObject getCategoryJson(@PathParam("id") int id) {
JSONObject o = new JSONObject();
o.put("id", id);
o.put("name", "id is " + id);
return o;
}

@POST
@Path("add")
@Produces(MediaType.TEXT_HTML)
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public String addCategory(Category category) {
System.out.println("处理添加类别逻辑,接受的数据为id:" + category.getId()
+ ",name:" + category.getName());
return "ok";
}

@POST
@Path("addbyname")
public String addCategory(@FormParam("name") @DefaultValue("NoName")String name){
System.out.println("处理添加类别逻辑,接受的数据为name:" + name);
return "添加类别" + name + "成功";
}

@PUT
@Path("update")
@Produces(MediaType.TEXT_HTML)
@Consumes({MediaType.APPLICATION_JSON , MediaType.APPLICATION_XML})
public String updateCategory(Category category){
System.out.println("处理更新类别逻辑,接受的数据为id:"+category.getId()+",name:"+category.getName());
return "ok";
}

@DELETE
@Path("delete/{id}")
public String deleteCategory(@PathParam("id") int id){
System.out.println("处理删除类别逻辑,接受的数据为id:"+id);
return "ok";
}
}
@XmlRootElement
public class Category {
private int id;
private String name;
public Category(){}
public Category(int id, String name){
this.id = id;
this.name = name;
}

@Override
public String toString() {
return "Category [id=" + id + ", name=" + name + "]";
}
//---------
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;
}
}


部署之后我们可以使用MyEclipse自带的工具进行测试。



如图,我们可以通过get方法获得xml格式的预先定义的一个list的数据



另一个方法,选择接受类型为json,输入pathparam,可以得到一个被转换成json的对象



这里我们post一个xml到服务器,可以得到响应,看到响应中的数据是我们上传的内容

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web service REST jersey