博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD
阅读量:6264 次
发布时间:2019-06-22

本文共 5361 字,大约阅读时间需要 17 分钟。

一、总体说明

通过jersey-client接口,创建客户端程序,来调用Jersey实现的RESTful服务,实现增、删、改、查等操作。 服务端主要是通过内存的方式,来模拟用户的增加、删除、修改、查询等操作。

二、创建服务端

1.在上文项目中, 在“com.waylau.rest.resources.UserResource“中修改代码, 首先创建一个HashMap,用来保存添加的用户

private static Map
userMap = new HashMap
();

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
getAllUsers(){ List
users = new ArrayList
(); 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,控制台输出如下

****增加用户addUser****  ****查询所有getAllUsers****  [{
"userId":"006","userName":"Susan","age":"21"}] ****修改用户updateUser**** ****根据id查询用户**** 006Susan33 ****查询所有getAllUsers**** [{
"userId":"006","userName":"Susan","age":"33"}] ****删除用户**** ****查询所有getAllUsers**** []

五、总结

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

Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);

2.WebTarget 指明了要请求的资源的地址

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

本章源码:

转载地址:http://wbupa.baihongyu.com/

你可能感兴趣的文章
背包九讲问题
查看>>
bootstrap模态框可拖动
查看>>
将黑苹果中的的Terminal和Bash for Windows美化了一下
查看>>
Java反射 - 字段
查看>>
sqlserver jbpm 4.4 建表语句
查看>>
如何自学图像编程
查看>>
十分钟上线-函数计算玩转wordpress
查看>>
[学习笔记] JavaScript 闭包
查看>>
手工注入 mutillidae
查看>>
线程间的协作(2)——生产者与消费者模式
查看>>
实战1:对lager测试来分析Erlang的一些特性
查看>>
input checkbox 复选框大小修改
查看>>
【iOS 开发】初识函数式 Swift 实用
查看>>
Java企业微信开发_Exception_02_java.security.InvalidKeyException: Illegal key size
查看>>
9月4日云栖精选夜读 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)...
查看>>
CentOS 7安装完成后基本配置
查看>>
Android弹窗二则: PopupWindow和AlertDialog
查看>>
Nginx+uWsgi生产部署Django
查看>>
Linux磁盘管理之创建磁盘分区05
查看>>
【星云测试】开发者测试-采用精准测试工具对Spring Boot应用进行测试
查看>>