用Jersey构建RESTful服务简单示例
本文具体代码实现参考自: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服务简单示例相关推荐
- maven jersey mysql_jersey+maven构建restful服务
一.新建一个Maven Web项目 a) 新建一个简单的Maven项目 b) 将简单的Maven项目转成Web项目 (若没出现further configuration available--或里面的 ...
- 使用Spring MVC 4构建Restful服务
使用Spring MVC 4构建RESTful服务相对于其它框架来说,有很多优势.首先,Spring MVC 4作为Spring的框架之一,可以很好地与Spring进行集成.其次,Spring MVC ...
- 使用Spring Boot构建RESTFul服务
每个人都在谈论微服务,例如WSO2微服务框架 , Spring Boot等.由于我已经很长时间没有从事任何与Spring相关的项目了,所以我想到了使用Spring Boot实现一个简单的RESTFul ...
- SharePoint 2013 调用WCF服务简单示例
内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助.好吧,进入正题! 第一部分 SharePoint 2013调用自带W ...
- cics 服务端配置_使用PHP在CICS上构建RESTful服务
cics 服务端配置 存档日期:2019年5月15日 | 首次发布:2009年4月21日 CICS®TransactionServer®(TS)是功能强大的事务管理器,旨在进行快速,大量的处理. Su ...
- Jersey构建Java RestFul Webservice基础学习教程
1.用Jersey构建RESTful服务1–HelloWorld http://www.waylau.com/jersey-restful-helloworld/ 2.用Jersey构建RESTful ...
- jersey tomcat MySQL_基于jersey和Apache Tomcat构建Restful Web服务(一)
基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...
- 使用ASP.Net WebAPI构建REST服务(一)——简单的示例
由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法.本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务. 首先创建一个Asp.Net ...
- 使用Spring 3.1和基于Java的配置构建RESTful Web服务,第2部分
1.概述 本文介绍了如何在Spring中设置REST –控制器和HTTP响应代码,有效负载编组配置和内容协商. 2.在Spring了解REST Spring框架支持两种创建RESTful服务的方式: ...
- REST,Web 服务,REST-ful 服务
from: https://www.ibm.com/developerworks/cn/webservices/ws-RESTservices/ 介绍 REpresentational State T ...
最新文章
- 转Java转iOS-第一个项目总结(2):遇到问题和解决方案
- activiti流程跟踪图简单详解
- 8.2.1.3 Range Optimization
- ARKit从入门到精通(2)-ARKit工作原理及流程介绍
- 服务器计时器、Windows 计时器和线程计时器
- java诸神47723_诸神战纪二-死神之谜
- 同个网络找不到计算机打印机共享,搜索不到共享打印机怎么办_同一局域网找不到共享打印机的解决方法-系统城...
- Compile、Make和Build的区别
- mysql 取一条离当前时间最近的记录
- “百花齐放”电商时代,网易七鱼打造专业电商客服
- processOn在线制图工具
- matlab调节字体的函数,matlab 画图添加图例时,改变图例中字体大小
- 微信网站被误封,不知道为何被封,站长认证一直失败该如何解决?
- 【ACWing】195. 骑士精神
- 音视频基础——libyuv格式转换
- [课业] 09 | 软工 | 软件工程的发展
- 何谓网站优化中的“内容为王”
- MSIC-find me
- 【ArchSummit】平安金融壹账通核心系统的微服务设计经验分享
- python里import bs4是什么意思_from bs4 import BeautifulSoup报错
热门文章
- 的不定积分_不定积分大集合——方法篇
- 拉格朗日中值定理ξ怎么求_高等数学3.1中值定理
- 在计算机上的英语作文,我和电脑的英语作文
- python 怎么表示阶乘_python表示阶乘
- mysql最简单的查看_查看Mysql版本号 (最简单的是status )
- 经典神经网络 -- RetinaNet的Focal_Loss : 设计原理与pytorch实现
- 深入分析java线程池的实现原理(转载)
- Spring学习篇:AOP知识整理
- 构建工具Bazel入门
- Javascript学习之创建对象