zoukankan      html  css  js  c++  java
  • Jersey构建Restful风格的Webserivces(三)

    一、总体说明

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

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

    二、创建服务端

    1.在上文项目中,

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

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

     

    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,控制台输出如下

    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注册

    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

  • 相关阅读:
    好看的WEB配色..留的美化界面用..
    为phpcms v9 后台增加按类别查找的功能,且不影响升级。
    OS开发过程中常用开源库
    stanford《Developing Apps for ios》第五课demo要点
    C语言简陋的播放mp3代码
    编译ffmpeg for iOS,并调试iFrameExtractor demo
    windows下配置nginx pathinfo模式,支持thinkphp
    初学GTK+2.0与glade的一些网络资源
    在Centos6.3中桥接方式配置vm virtualbox中的系统网络
    Foundation的基本操作—字符串、数组、字典、集合
  • 原文地址:https://www.cnblogs.com/juepei/p/4008061.html
Copyright © 2011-2022 走看看