zoukankan      html  css  js  c++  java
  • 通过jersey-client客户端调用Jersey的Web服务模拟CURD

    一、总体说明

    通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增、删、改、查等操作。

    服务端主要是通过内存的方式,来模拟用户的增加、删除、修改、查询等操作。

    二、创建服务端

    1.在上文项目中,

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

    首先创建一个HashMap,用来保存添加的用户

    [java] view plain copy 在CODE上查看代码片派生到我的代码片
    1. private static Map<String,User> userMap  = new HashMap<String,User>();  
    2.创建增、删、改、查 用户资源等操作
    [java] view plain copy 在CODE上查看代码片派生到我的代码片
    1. /** 
    2.      * 增加 
    3.      * @param user 
    4.      */  
    5.     @POST  
    6.     @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})  
    7.     public void createStudent(User user)  
    8.     {  
    9.         userMap.put(user.getUserId(), user );  
    10.     }  
    11.       
    12.     /** 
    13.      * 删除 
    14.      * @param id 
    15.      */  
    16.     @DELETE  
    17.     @Path("{id}")  
    18.     public void deleteStudent(@PathParam("id")String id){  
    19.         userMap.remove(id);  
    20.     }  
    21.       
    22.     /** 
    23.      * 修改 
    24.      * @param user 
    25.      */  
    26.     @PUT  
    27.     @Consumes(MediaType.APPLICATION_XML)  
    28.     public void updateStudent(User user){  
    29.         userMap.put(user.getUserId(), user );  
    30.     }  
    31.    
    32.     /** 
    33.      * 根据id查询 
    34.      * @param id 
    35.      * @return 
    36.      */  
    37.     @GET  
    38.     @Path("{id}")  
    39.     @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})  
    40.     public User getUserById(@PathParam("id") String id){  
    41.         User u = userMap.get(id);  
    42.         return u;  
    43.     }  
    44.      
    45.     /** 
    46.      * 查询所有 
    47.      * @return 
    48.      */  
    49.     @GET  
    50.     @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})  
    51.     public List<User> getAllUsers(){       
    52.         List<User> users = new ArrayList<User>();     
    53.         users.addAll( userMap.values() );    
    54.         return users;  
    55.     }  
    56.       
    三、创建客户端程序

    1.创建包“com.waylau.rest.client”,在包下建一个UserClient.java,代码如下:

    [java] view plain copy 在CODE上查看代码片派生到我的代码片
    1. package com.waylau.rest.client;  
    2.   
    3. import javax.ws.rs.client.Client;  
    4. import javax.ws.rs.client.ClientBuilder;  
    5. import javax.ws.rs.client.Entity;  
    6. import javax.ws.rs.client.WebTarget;  
    7. import javax.ws.rs.core.MediaType;  
    8. import javax.ws.rs.core.Response;  
    9.   
    10. import org.codehaus.jackson.jaxrs.JacksonJsonProvider;  
    11.   
    12. import com.waylau.rest.bean.User;  
    13.   
    14.    
    15. /** 
    16.  * 用户客户端,用来测试资源 
    17.  * @author waylau.com 
    18.  * 2014-3-18 
    19.  */  
    20. public class UserClient {  
    21.   
    22.     private static String serverUri = "http://localhost:8089/RestDemo/rest";  
    23.     /** 
    24.      * @param args 
    25.      */  
    26.     public static void main(String[] args) {  
    27.         addUser();  
    28.         getAllUsers();  
    29.         updateUser();  
    30.         getUserById();  
    31.         getAllUsers();  
    32.         delUser();  
    33.         getAllUsers();  
    34.   
    35.     }  
    36.     /** 
    37.      * 添加用户 
    38.      */  
    39.      private static void addUser() {  
    40.          System.out.println("****增加用户addUser****");  
    41.          User user = new User("006","Susan","21");    
    42.          Client client = ClientBuilder.newClient();  
    43.          WebTarget target = client.target(serverUri + "/users");  
    44.          Response response = target.request().buildPost(Entity.entity(user, MediaType.APPLICATION_XML)).invoke();  
    45.          response.close();  
    46.     }  
    47.        
    48.     /** 
    49.      * 删除用户 
    50.      */  
    51.      private static void delUser() {  
    52.          System.out.println("****删除用户****");  
    53.          Client client = ClientBuilder.newClient();  
    54.          WebTarget target = client.target(serverUri + "/users/006");  
    55.          Response response = target.request().delete();  
    56.          response.close();  
    57.     }  
    58.        
    59.        
    60.     /** 
    61.      * 修改用户 
    62.      */  
    63.      private static void updateUser() {  
    64.          System.out.println("****修改用户updateUser****");  
    65.          User user = new User("006","Susan","33");    
    66.          Client client = ClientBuilder.newClient();  
    67.          WebTarget target = client.target(serverUri + "/users");  
    68.          Response response = target.request().buildPut( Entity.entity(user, MediaType.APPLICATION_XML)).invoke();  
    69.          response.close();  
    70.     }  
    71.     /** 
    72.      * 根据id查询用户 
    73.      */  
    74.      private static void getUserById() {  
    75.          System.out.println("****根据id查询用户****");  
    76.          Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 注册json 支持  
    77.          WebTarget target = client.target(serverUri + "/users/006");  
    78.          Response response = target.request().get();  
    79.          User user = response.readEntity(User.class);  
    80.          System.out.println(user.getUserId() + user.getUserName()  +  user.getAge());  
    81.          response.close();  
    82.     }  
    83.     /** 
    84.      * 查询所有用户 
    85.      */  
    86.      private static void getAllUsers() {  
    87.          System.out.println("****查询所有getAllUsers****");  
    88.            
    89.          Client client = ClientBuilder.newClient();  
    90.   
    91.          WebTarget target = client.target(serverUri + "/users");  
    92.          Response response = target.request().get();  
    93.  <span style="white-space:pre">     </span> String value = response.readEntity(String.class);  
    94.     <span style="white-space:pre">     <span style="white-space:pre"> </span></span> System.out.println(value);  
    95.         <span style="white-space:pre">  </span> response.close();  //关闭连接  
    96.      }  
    97.        
    98. }  
    四、运行

    启动服务端项目,运行客户端程序UserClient,控制台输出如下

    [html] view plain copy 在CODE上查看代码片派生到我的代码片
    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. []  
    五、总结

    1.客户端如果需要进行JSON转换,需要进行JSON注册

    [java] view plain copy 在CODE上查看代码片派生到我的代码片
    1. Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);  
    2.WebTarget 指明了要请求的资源的地址

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

    *重点来了:现在可以用Firefox工具RESTClient

  • 相关阅读:
    webpack 配置别名,解决 import 时路径查找麻烦的问题
    Vue 中 diff 算法后更新 DOM 的方法
    React Native 开发环境搭建
    JavaScript 堆排序详解
    JavaScript 快速排序详解
    websocket 心跳重连
    AJAX 请求后使用 JS 打开新标签页被阻止的解决方法
    auto.js环境搭建
    Mac os 创建pppoe拨号
    mac os IntelliJ IDEA搭建环境
  • 原文地址:https://www.cnblogs.com/zsqfightyourway/p/7116578.html
Copyright © 2011-2022 走看看