Jersey構建Restful風格的Webserivces(三)

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   java   for   

一、總體說明

通過jersey-client介面,建立用戶端程式,來調用Jersey實現的RESTful服務,實現增、刪、改、查等操作。

服務端主要是通過記憶體的方式,來類比使用者的增加、刪除、修改、查詢等操作。

二、建立服務端

 

1.在上文項目中,

在“com.waylau.rest.resources.UserResource“中修改代碼,

首先建立一個HashMap,用來儲存添加的使用者

 

[java] view plaincopyprint?
  1. private static Map<String,User> userMap  = new HashMap<String,User>();  
private static Map<String,User> userMap  = new HashMap<String,User>();

2.建立增、刪、改、查 使用者資源等操作

 

/**     * 增加     * @param user     */    @POST    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})    public void createStudent(User user)    {        userMap.put(user.getUserId(), user );    }        /**     * 刪除     * @param id     */    @DELETE    @Path("{id}")    public void deleteStudent(@PathParam("id")String id){        userMap.remove(id);    }        /**     * 修改     * @param user     */    @PUT    @Consumes(MediaType.APPLICATION_XML)    public void updateStudent(User user){        userMap.put(user.getUserId(), user );    }     /**     * 根據id查詢     * @param id     * @return     */    @GET    @Path("{id}")    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})    public User getUserById(@PathParam("id") String id){        User u = userMap.get(id);        return u;    }       /**     * 查詢所有     * @return     */    @GET    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})    public List<User> getAllUsers(){             List<User> users = new ArrayList<User>();           users.addAll( userMap.values() );          return users;    }    

 

三、建立用戶端程式

 

1.建立包“com.waylau.rest.client”,在包下建一個UserClient.java,代碼如下:

package com.waylau.rest.client;import javax.ws.rs.client.Client;import javax.ws.rs.client.ClientBuilder;import javax.ws.rs.client.Entity;import javax.ws.rs.client.WebTarget;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import org.codehaus.jackson.jaxrs.JacksonJsonProvider;import com.waylau.rest.bean.User; /** * 使用者用戶端,用來測試資源 * @author waylau.com * 2014-3-18 */public class UserClient {    private static String serverUri = "http://localhost:8089/RestDemo/rest";    /**     * @param args     */    public static void main(String[] args) {        addUser();        getAllUsers();        updateUser();        getUserById();        getAllUsers();        delUser();        getAllUsers();    }    /**     * 添加使用者     */     private static void addUser() {         System.out.println("****增加使用者addUser****");         User user = new User("006","Susan","21");           Client client = ClientBuilder.newClient();         WebTarget target = client.target(serverUri + "/users");         Response response = target.request().buildPost(Entity.entity(user, MediaType.APPLICATION_XML)).invoke();         response.close();    }         /**     * 刪除使用者     */     private static void delUser() {         System.out.println("****刪除使用者****");         Client client = ClientBuilder.newClient();         WebTarget target = client.target(serverUri + "/users/006");         Response response = target.request().delete();         response.close();    }              /**     * 修改使用者     */     private static void updateUser() {         System.out.println("****修改使用者updateUser****");         User user = new User("006","Susan","33");           Client client = ClientBuilder.newClient();         WebTarget target = client.target(serverUri + "/users");         Response response = target.request().buildPut( Entity.entity(user, MediaType.APPLICATION_XML)).invoke();         response.close();    }    /**     * 根據id查詢使用者     */     private static void getUserById() {         System.out.println("****根據id查詢使用者****");         Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 註冊json 支援         WebTarget target = client.target(serverUri + "/users/006");         Response response = target.request().get();         User user = response.readEntity(User.class);         System.out.println(user.getUserId() + user.getUserName()  +  user.getAge());         response.close();    }    /**     * 查詢所有使用者     */     private static void getAllUsers() {         System.out.println("****查詢所有getAllUsers****");                  Client client = ClientBuilder.newClient();         WebTarget target = client.target(serverUri + "/users");         Response response = target.request().get();          String value = response.readEntity(String.class);              System.out.println(value);             response.close();  //關閉串連     }     }

 

四、運行

 

啟動服務端項目,運行用戶端程式UserClient,控制台輸出如下

 

[html] view plaincopyprint?
  1. ****增加使用者addUser****  
  2. ****查詢所有getAllUsers****  
  3. [{"userId":"006","userName":"Susan","age":"21"}]  
  4. ****修改使用者updateUser****  
  5. ****根據id查詢使用者****  
  6. 006Susan33  
  7. ****查詢所有getAllUsers****  
  8. [{"userId":"006","userName":"Susan","age":"33"}]  
  9. ****刪除使用者****  
  10. ****查詢所有getAllUsers****  
  11. []  
****增加使用者addUser********查詢所有getAllUsers****[{"userId":"006","userName":"Susan","age":"21"}]****修改使用者updateUser********根據id查詢使用者****006Susan33****查詢所有getAllUsers****[{"userId":"006","userName":"Susan","age":"33"}]****刪除使用者********查詢所有getAllUsers****[]

五、總結

 

1.用戶端如果需要進行JSON轉換,需要進行JSON註冊

 

[java] view plaincopyprint?
  1. Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);  
 Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);

2.WebTarget 指明了要請求的資源的地址

3.target.request(). 後面跟的是請求的方法:POST,GET,PUT或DELETE

 

轉自:http://blog.csdn.net/kkkloveyou/article/details/21517165

Jersey構建Restful風格的Webserivces(三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.