標籤:style blog http color io os ar java for
一、總體說明
通過jersey-client介面,建立用戶端程式,來調用Jersey實現的RESTful服務,實現增、刪、改、查等操作。
服務端主要是通過記憶體的方式,來類比使用者的增加、刪除、修改、查詢等操作。
二、建立服務端
1.在上文項目中,
在“com.waylau.rest.resources.UserResource“中修改代碼,
首先建立一個HashMap,用來儲存添加的使用者
[java] view plaincopyprint?
- 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?
- ****增加使用者addUser****
- ****查詢所有getAllUsers****
- [{"userId":"006","userName":"Susan","age":"21"}]
- ****修改使用者updateUser****
- ****根據id查詢使用者****
- 006Susan33
- ****查詢所有getAllUsers****
- [{"userId":"006","userName":"Susan","age":"33"}]
- ****刪除使用者****
- ****查詢所有getAllUsers****
- []
****增加使用者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?
- 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(三)