本文具体代码实现参考自:http://blog.csdn.net/kkkloveyou/article/details/21391033,如有问题,请联系我。

本文仅仅是对原文做了一点补充,感谢原作者的精彩文章,对我帮助很大。

一,环境

  IDE:myeclipse10

  tomcat版本,jdk版本会在下一篇文章做详细说明。

二,项目的构建

  在https://jersey.java.net/download.html中,可以发现两条很实用的mvn指令:

  命令一:构建基于 Servlet container 的工程:

  mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.23.1

  DarchetypeVersion=2.23.1表示使用的jersey的版本为2.23.1

  使用该指令时,因为网速等关系可能会比较慢,请耐心等待,同时需要按照提示,填入必要信息。

  使用该指令创建的项目中的pom.xml已经自己添加了对jersey的依赖,不需要手动添加。

  将成功创建的工程导入到myeclipse10中,这里创建的工程位于F盘下,使用Maven4MyEclipse更新工程结构,更新依赖,就可以使用了。工程结构如下:

  

  MyResource.java文件是maven自行创建的,内容如下:

 1 package com.wudi.test;
 2
 3 import javax.ws.rs.GET;
 4 import javax.ws.rs.Path;
 5 import javax.ws.rs.Produces;
 6 import javax.ws.rs.core.MediaType;
 7
 8 /**
 9  * Root resource (exposed at "myresource" path)
10  */
11 @Path("myresource")
12 public class MyResource {
13
14     /**
15      * Method handling HTTP GET requests. The returned object will be sent
16      * to the client as "text/plain" media type.
17      *
18      * @return String that will be returned as a text/plain response.
19      */
20     @GET
21     @Produces(MediaType.TEXT_PLAIN)
22     public String getIt() {
23         return "Got it!";
24     }
25 }

  命令二:构建基于 Grizzly 2 HTTP server container 的工程: 

  mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeVersion=2.23.1

  此命令构建的工程,没有接触过,不做说明。

三,具体的代码实现

  对自动生成工程的web.xml做一点修改,如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="3.0"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 6     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 7   <display-name></display-name>
 8   <welcome-file-list>
 9     <welcome-file>index.jsp</welcome-file>
10   </welcome-file-list>
11     <servlet>
12         <servlet-name>Jersey Web Application</servlet-name>
13         <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
14         <init-param>
15             <param-name>jersey.config.server.provider.packages</param-name>
16             <param-value>com.wudi.test</param-value>
17         </init-param>
18         <load-on-startup>1</load-on-startup>
19     </servlet>
20     <servlet-mapping>
21         <servlet-name>Jersey Web Application</servlet-name>
22         <url-pattern>/webapi/*</url-pattern>
23     </servlet-mapping>
24 </web-app>

  部署到tomcat,启动服务器,url:http://localhost:8080/jerseyDemo/webapi/myresource

  下面再自己编写两个Demo,代码如下:

 1 package com.wudi.test;
 2
 3 import javax.ws.rs.GET;
 4 import javax.ws.rs.Path;
 5 import javax.ws.rs.Produces;
 6 import javax.ws.rs.PathParam;
 7 import javax.ws.rs.core.MediaType;
 8
 9
10 @Path("/hello")
11 public class HelloResource {
12     @GET
13     @Produces(MediaType.TEXT_PLAIN)
14     public String sayHello() {
15         return "Hello World!" ;
16     }
17
18
19     @GET
20     @Path("/{param}")
21     @Produces("text/plain;charset=UTF-8")
22     public String sayHelloToUTF8(@PathParam("param") String username) {
23         return "Hello " + username;
24     }
25
26 }  

http://localhost:8080/jerseyDemo/webapi/hello

http://localhost:8080/jerseyDemo/webapi/hello/Way你好吗

原创作者,关于jersey的其他几篇精彩文章:

用Jersey构建RESTful服务2--JAVA对象转成XML输出
http://blog.csdn.net/kkkloveyou/article/details/21415735
用Jersey构建RESTful服务3--JAVA对象转成JSON输出
http://blog.csdn.net/kkkloveyou/article/details/21485243
用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD
http://blog.csdn.net/kkkloveyou/article/details/21517165

对 用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD 中的代码做点补充

  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:8080/jerseyDemo/webapi";
 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          Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 注册json 支持
 44          WebTarget target = client.target(serverUri + "/users/getUsersJson");
 45          Response response = target.request().buildPost(Entity.entity(user, MediaType.APPLICATION_XML)).invoke();
 46          response.close();
 47     }
 48
 49     /**
 50      * 删除用户
 51      */
 52      private static void delUser() {
 53          System.out.println("****删除用户****");
 54          //Client client = ClientBuilder.newClient();
 55          Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 注册json 支持
 56          WebTarget target = client.target(serverUri + "/users/006");
 57          Response response = target.request().delete();
 58          response.close();
 59     }
 60
 61
 62     /**
 63      * 修改用户
 64      */
 65      private static void updateUser() {
 66          System.out.println("****修改用户updateUser****");
 67          User user = new User("006","Susan","33");
 68          //Client client = ClientBuilder.newClient();
 69          Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 注册json 支持
 70          WebTarget target = client.target(serverUri + "/users");
 71          Response response = target.request().buildPut( Entity.entity(user, MediaType.APPLICATION_XML)).invoke();
 72          response.close();
 73     }
 74     /**
 75      * 根据id查询用户
 76      */
 77      private static void getUserById() {
 78          System.out.println("****根据id查询用户****");
 79          //Client client = ClientBuilder.newClient();
 80          Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);// 注册json 支持
 81          WebTarget target = client.target(serverUri + "/users/006");
 82          Response response = target.request().get();
 83          User user = response.readEntity(User.class);
 84          System.out.println(user.getUserId() + user.getUserName()  +  user.getAge());
 85          response = target.request(MediaType.APPLICATION_JSON).get();
 86          user = response.readEntity(User.class);
 87          System.out.println(user.getUserId() + user.getUserName()  +  user.getAge());
 88          response.close();
 89     }
 90     /**
 91      * 查询所有用户
 92      */
 93      private static void getAllUsers() {
 94          System.out.println("****查询所有getAllUsers****");
 95          //Client client = ClientBuilder.newClient();
 96          Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class);
 97          WebTarget target = client.target(serverUri + "/users/getUsersJson");
 98          Response response = target.request().get();
 99          String value = response.readEntity(String.class);
100          System.out.println(value);
101          response = target.request(MediaType.APPLICATION_JSON).get();
102          value = response.readEntity(String.class);
103          System.out.println(value);
104          response.close();  //关闭连接
105      }
106
107 }

View Code

  运行结果:

****增加用户addUser****
****查询所有getAllUsers****
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><users></users>
[]
****修改用户updateUser****
****根据id查询用户****
006Susan33
006Susan33
****查询所有getAllUsers****
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><users><user><age>33</age><userId>006</userId><userName>Susan</userName></user></users>
[{"userId":"006","userName":"Susan","age":"33"}]
****删除用户****
****查询所有getAllUsers****
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><users></users>
[]

  Response response = target.request().get();

  取到的数据格式为对应url,@Produces列表中的第一个格式

  response = target.request(MediaType.APPLICATION_JSON).get();

  取到的数据格式为对应url,@Produces列表中的指定格式,这里格式为MediaType.APPLICATION_JSON

Client client = ClientBuilder.newClient().register(JacksonJsonProvider.class); 相对于Client client = ClientBuilder.newClient();就是多了客户端进行JSON转换时需要的JSON注册,客户端如果不需要JSON转换,这两个都是可以使用的,总的来说,前者功能更强。

  

转载于:https://www.cnblogs.com/jade-fairfarren/p/5692519.html

用Jersey构建RESTful服务简单示例相关推荐

  1. maven jersey mysql_jersey+maven构建restful服务

    一.新建一个Maven Web项目 a) 新建一个简单的Maven项目 b) 将简单的Maven项目转成Web项目 (若没出现further configuration available--或里面的 ...

  2. 使用Spring MVC 4构建Restful服务

    使用Spring MVC 4构建RESTful服务相对于其它框架来说,有很多优势.首先,Spring MVC 4作为Spring的框架之一,可以很好地与Spring进行集成.其次,Spring MVC ...

  3. 使用Spring Boot构建RESTFul服务

    每个人都在谈论微服务,例如WSO2微服务框架 , Spring Boot等.由于我已经很长时间没有从事任何与Spring相关的项目了,所以我想到了使用Spring Boot实现一个简单的RESTFul ...

  4. SharePoint 2013 调用WCF服务简单示例

    内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助.好吧,进入正题! 第一部分 SharePoint 2013调用自带W ...

  5. cics 服务端配置_使用PHP在CICS上构建RESTful服务

    cics 服务端配置 存档日期:2019年5月15日 | 首次发布:2009年4月21日 CICS®TransactionServer®(TS)是功能强大的事务管理器,旨在进行快速,大量的处理. Su ...

  6. Jersey构建Java RestFul Webservice基础学习教程

    1.用Jersey构建RESTful服务1–HelloWorld http://www.waylau.com/jersey-restful-helloworld/ 2.用Jersey构建RESTful ...

  7. jersey tomcat MySQL_基于jersey和Apache Tomcat构建Restful Web服务(一)

    基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...

  8. 使用ASP.Net WebAPI构建REST服务(一)——简单的示例

    由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法.本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务. 首先创建一个Asp.Net ...

  9. 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分

    1.概述 本文介绍了如何在Spring中设置REST –控制器和HTTP响应代码,有效负载编组配置和内容协商. 2.在Spring了解REST Spring框架支持两种创建RESTful服务的方式: ...

  10. REST,Web 服务,REST-ful 服务

    from: https://www.ibm.com/developerworks/cn/webservices/ws-RESTservices/ 介绍 REpresentational State T ...

最新文章

  1. 转Java转iOS-第一个项目总结(2):遇到问题和解决方案
  2. activiti流程跟踪图简单详解
  3. 8.2.1.3 Range Optimization
  4. ARKit从入门到精通(2)-ARKit工作原理及流程介绍
  5. 服务器计时器、Windows 计时器和线程计时器
  6. java诸神47723_诸神战纪二-死神之谜
  7. 同个网络找不到计算机打印机共享,搜索不到共享打印机怎么办_同一局域网找不到共享打印机的解决方法-系统城...
  8. Compile、Make和Build的区别
  9. mysql 取一条离当前时间最近的记录
  10. “百花齐放”电商时代,网易七鱼打造专业电商客服
  11. processOn在线制图工具
  12. matlab调节字体的函数,matlab 画图添加图例时,改变图例中字体大小
  13. 微信网站被误封,不知道为何被封,站长认证一直失败该如何解决?
  14. 【ACWing】195. 骑士精神
  15. 音视频基础——libyuv格式转换
  16. [课业] 09 | 软工 | 软件工程的发展
  17. 何谓网站优化中的“内容为王”
  18. MSIC-find me
  19. 【ArchSummit】平安金融壹账通核心系统的微服务设计经验分享
  20. python里import bs4是什么意思_from bs4 import BeautifulSoup报错

热门文章

  1. 的不定积分_不定积分大集合——方法篇
  2. 拉格朗日中值定理ξ怎么求_高等数学3.1中值定理
  3. 在计算机上的英语作文,我和电脑的英语作文
  4. python 怎么表示阶乘_python表示阶乘
  5. mysql最简单的查看_查看Mysql版本号 (最简单的是status )
  6. 经典神经网络 -- RetinaNet的Focal_Loss : 设计原理与pytorch实现
  7. 深入分析java线程池的实现原理(转载)
  8. Spring学习篇:AOP知识整理
  9. 构建工具Bazel入门
  10. Javascript学习之创建对象