jersey的依赖包
核心服务器:jersey-core.jar,jersey-server.jar,jsr311-api.jar,asm.jar
核心客户端:jersey-client.jarSpring支持: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 getCategory() {
List list = new ArrayList();
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到服务器,可以得到响应,看到响应中的数据是我们上传的内容