服务资源的代码如下:
package com.example.annotation.method;
import java.awt.List;
import java.util.ArrayList;
import javax.ws.rs.BeanParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.example.domain.Book;
//新加的,自己写的, get put delete post方法
@Path("BookResourceget")
public class BookResourceget {
//http://localhost:8080/simpleservice/webapi/BookResourceget/
@GET
@Produces(MediaType.APPLICATION_JSON)
public Book getWeight(){
Book book=new Book();
book.setBookId(Long.parseLong("110"));
book.setBookName("yu");
book.setPublisher("qq");
return book;
}
@GET
@Path("listbook")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Listbook listbook(){
Book book=new Book();
book.setBookId(Long.parseLong("110"));
book.setBookName("yu");
book.setPublisher("qq");
Book book2=new Book();
book2.setBookId(Long.parseLong("112"));
book2.setBookName("yu2");
book2.setPublisher("qq2");
ArrayList<Book> list=new ArrayList<Book>();
list.add(book);
list.add(book2);
Listbook booklist=new Listbook();
booklist.setListbook(list);
return booklist;
}
//网页版本用这个才能接收到参数,正确解析,可以用ajax请求,也可以用浏览器测试工具
@PUT
@Produces(MediaType.APPLICATION_XML)
public Book newBook(@BeanParam Book book){
return book;
}
//如果用jersey客户端的只能用这个,直接传递实体类和相应实体类
@PUT
@Path("Client")
@Produces(MediaType.APPLICATION_JSON)
public Book newBook1( Book book){
return book;
}
//网页版本用这个才能接收到参数,正确解析,可以用ajax请求,也可以用浏览器测试工具
@POST
//参数说明 @Consumes 可以接收客户端什么样的形式过来,
//网页过来的post请求的内容形式一般是application/x-www-form-urlencoded,一般如果不确定注释即可
//@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
//@Produces,返回给客户端的的类型MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON
//如果请求段没指定就会返回xml优先
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Book createBook(@BeanParam Book book){
return book;
}
//如果用jersey客户端的只能用这个,直接传递实体类和相应实体类
//上面和下面代码的区别 @BeanParam Book book,Book book 注意传入的实体类
@POST
@Path("Client")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces(MediaType.APPLICATION_JSON)
public Book createBook2(Book book) {
return book;
}
@DELETE
public void delete(@QueryParam("bookId") final long bookId){
System.out.println(bookId);
}
}
见注释说明
可以用ajax来测试,也可以用jersey客户端来测试
测试端代码如下:
public String getbook() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget");
final String result = pathTarget.request().get(String.class);
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result;
}
public String delete() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget").queryParam("bookId", "110");
final Response result = pathTarget.request().delete();
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result.getStatus() + "";
}
public Book post() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget").path("Client");
Book book = new Book(100L, "TEST BOOK","你好");
final Book result = pathTarget.request().post(Entity.entity(book, MediaType.APPLICATION_XML), Book.class);
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result;
}
public Book put() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget").path("Client");
Book book = new Book(100L, "TEST BOOK","你好2");
final Book result = pathTarget.request().put(Entity.entity(book, MediaType.APPLICATION_XML), Book.class);
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result;
}