Jersey构建Restful风格的Webserivces(三)

一、总体说明

通过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

时间: 2024-10-11 12:09:48

Jersey构建Restful风格的Webserivces(三)的相关文章

Jersey构建Restful风格的webservices

最近一直在搞老项目的开发工作,很少写博文了.听了两位阿里巴巴大牛的讨论,决定试试用restful风格的webservices看看. 这里用的是Jersey这个框架,刚开始弄,有点麻烦,只能到处查资料.网上的资料也比较零碎,这里整理一下. 一.helloworld 需要三个包,这里从maven获取. <dependencies> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>j

Jersey构建restful风格的WebSerivices(二)

一. 总体说明 XML和JSON 是最为常用的数据交换格式.本例子演示如何将java对象,转成XML输出. 二.流程 1.在上文的例子中,创建一个包“com.waylau.rest.bean” 2.在该包下创建一个JAVA类"User" [java] view plaincopyprint? package com.waylau.rest.bean; import javax.xml.bind.annotation.XmlRootElement; /* * 用户 bean * @aut

lucene构建restful风格的简单搜索引擎服务

来自于本人博客: lucene构建restful风格的简单搜索引擎服务 本人的博客现在也要改成使用lucene进行全文检索的功能,因此在这里把代码贴出来与大家分享 一,目录结构: 二,配置文件: 总共有四个配置文件:bonecp-config.xml,IKAnalyzer.cfg.xml,log4j.properties,system-config.xml 1.bonecp-config.xml是配置jdbc连接池用的,不用这个配置也行,bonecp包有默认配置 2.IKAnalyzer.cfg

用Jersey构建RESTful服务7--Jersey+SQLServer+Hibernate4.3+Spring3.2

一.整体说明 本例执行演示了用 Jersey 构建 RESTful 服务中.怎样集成 Spring3 二.环境 1.上文的项目RestDemo 2.Spring及其它相关的jar ,导入项目 三.配置 1.根文件夹下下创建 Spring 的配置文件applicationContext.xml: 配置例如以下: 四.执行 1.先执行项目 2.执行UserClient.java測试,控制台输出例如以下 ****添加用户addUser**** ****查询全部getAllUsers**** [{"us

springMVC+json构建restful风格的服务

首先.要知道什么是rest服务,什么是rest服务呢? REST(英文:Representational State Transfer,简称REST)描写叙述了一个架构样式的网络系统.比方 web 应用程序. 它首次出如今 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之中的一个. 在眼下主流的三种Web服务交互方案中.REST相比于SOAP(Simple Object Access protocol,简单对象訪问协议)以及XML-RPC更加简单明了,不管

Spring Boot 中 10 行代码构建 RESTful 风格应用

RESTful ,到现在相信已经没人不知道这个东西了吧!关于 RESTful 的概念,我这里就不做过多介绍了,传统的 Struts 对 RESTful 支持不够友好 ,但是 SpringMVC 对于 RESTful 提供了很好的支持,常见的相关注解有: @RestController @GetMapping @PutMapping @PostMapping @DeleteMapping @ResponseBody ... 这些注解都是和 RESTful 相关的,在移动互联网中,RESTful 得

用Jersey构建RESTful服务1--HelloWorld

本文具体代码实现参考自:http://blog.csdn.net/kkkloveyou/article/details/21391033,如有问题,请联系我. 本文仅仅是对原文做了一点补充,感谢原作者的精彩文章,对我帮助很大. 一,环境 IDE:myeclipse10 tomcat版本,jdk版本会在下一篇文章做详细说明. 二,项目的构建 在https://jersey.java.net/download.html中,可以发现两条很实用的mvn指令: 命令一:构建基于 Servlet conta

用Jersey构建RESTful服务简单示例,遭遇的tomcat和jdk的版本问题

当前环境: web工程的jdk: jdk1.6.0_43(x64) tomcat: apache-tomcat-7.0.53(x64) tomcat使用的jdk: jdk1.6.0_43(x64) 运行tomcat,控制台输出如下: 1 2016-7-21 9:23:15 org.apache.catalina.core.AprLifecycleListener init 2 信息: Loaded APR based Apache Tomcat Native library 1.1.29 usi

无废话Jersey构建RESTful服务之WebService系统教程 --3 [JAVA对象转成JSON输出]

一. 总体说明 XML和JSON 是最为常用的数据交换格式.本例子演示如何将JAVA对象,转换成JSON输出. 二.流程 1.在上文项目中, 在“cn.itrush.rest.resources.UserResource“中增加代码,代码如下: 1 package cn.itrush.rest.resources; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 impo