1. Maven Dependency

<properties>
<jersey.version>1.19.1</jersey.version>
</properties> <dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.4</version>
</dependency>
</dependencies>

2. JavaBean

package com.huey.hello.jersey.bean;

import javax.xml.bind.annotation.XmlRootElement;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; @NoArgsConstructor
@AllArgsConstructor
@Data
@XmlRootElement
public class Book { private String title;
private String[] author;
private String publisher;
private double price;
private String isbn; }

3. RESTful Web Services

package com.huey.hello.jersey.service;

import java.util.ArrayList;
import java.util.List; import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType; import com.huey.hello.jersey.bean.Book; @Path("/books")
public class BookService { private static List<Book> books; static {
books = new ArrayList<Book>();
books.add(new Book("高性能MySQL",
new String[]{"Baron Schwartz", "Peter Zaitsev"},
"电子工业出版社",
128.00,
"9787121198854"));
books.add(new Book("HTTP权威指南",
new String[]{"David Gourley", "Brian Totty"},
"人民邮电出版社",
109.00,
"9787115281487"));
} @GET
@Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} )
public List<Book> getBooks() {
return books;
} @GET
@Path("/{isbn}")
@Produces( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} )
public Book getBook(@PathParam("isbn") String isbn) {
for (Book book : books) {
if (book.getIsbn().equals(isbn)) {
return book;
}
}
throw new WebApplicationException(404);
} @POST
@Consumes( {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML} )
public void addBook(Book book) {
books.add(book);
} }

4. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>hello-jersey</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>\
</welcome-file-list> <servlet>
<servlet-name>JerseyRESTService</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.huey.hello.jersey.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JerseyRESTService</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>

5. 部署启动 Web 工程。

6. 测试。

a) getBook

[huey@huey-K42JE ~]$ curl -i http://localhost:8080/hello-jersey/rest/books/9787115281487
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 11 Apr 2016 05:03:04 GMT {"author":["David Gourley","Brian Totty"],"isbn":"9787115281487","price":"109.0","publisher":"人民邮电出版社","title":"HTTP权威指南"}

b) addBook

[huey@huey-K42JE ~]$ curl -i -H "Content-Type: application/json" -d '{"author":["Bruce Snyder","Dejan Bosanac"],"isbn":"9781933988948","price":"109.0","publisher":"Manning Publications","title":"ActiveMQ in Action"}' http://localhost:8080/hello-jersey/rest/books/
HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Date: Mon, 11 Apr 2016 04:59:55 GMT

c) getBooks

[huey@huey-K42JE ~]$ curl -i -H "Accept: application/xml"  http://localhost:8080/hello-jersey/rest/books/
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/xml
Content-Length: 649
Date: Mon, 11 Apr 2016 05:07:15 GMT <?xml version="1.0" encoding="UTF-8" standalone="yes"?><books><book><author>Baron Schwartz</author><author>Peter Zaitsev</author><isbn>9787121198854</isbn><price>128.0</price><publisher>电子业出版社</publisher><title>高性能MySQL</title></book><book><author>David Gourley</author><author>Brian Totty</author><isbn>9787115281487</isbn><price>109.0</price><publisher>人民邮电出版社</publisher><title>HTTP权威指南</title></book><book><author>Bruce Snyder</author><author>Dejan Bosanac</author><isbn>9781933988948</isbn><price>109.0</price><publisher>Manning Publications</publisher><title>ActiveMQ in Action</title></book></books>

最新文章

  1. 【转译】加入ZigBee联盟,共画物联网的未来
  2. android 自定义控件——(三)水平线、虚线
  3. 关于JQuery设置checkbox checked 的问题
  4. 示例Oracle 10.2.0.1.0升级到10.2.0.4.0一例
  5. Java 集合系列 13 WeakHashMap
  6. Linux下jvm、tomcat、mysql、log4j优化配置笔记[转]
  7. centos7源以及相关的一些命令
  8. Struts1、WebWork、Struts2介绍
  9. easyUI droppable组件使用
  10. ubuntu nsight上链接OpenGL
  11. 全面解读Java NIO工作原理(1)
  12. Spring Cloud Eureka 使用 IP 地址进行服务注册
  13. 安装mavlink遇到的问题(future找不到)
  14. Kotlin入门(23)适配器的进阶表达
  15. Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式
  16. Nowcoder contest 370F Rinne Loves Edges (简单树形DP) || 【最大流】(模板)
  17. NuGet Package Explorer
  18. [cmd]如何设置 Windows 默认命令行窗口大小和缓冲区大小
  19. asp.net 网站 发布时 去掉.cs文件
  20. js区分大小写

热门文章

  1. ASP.NET MVC 前端(View)向后端(Controller)中传值
  2. 转载 从Http到Https
  3. 用6个字符写出任意的Javascript代码
  4. 《解剖PetShop》系列转载
  5. SQL SERVER 2008/2012/2012R2/2014 设置开启远程连接(sa配置)
  6. WinForms 新窗体后台打开完美的解决
  7. Cocos2d-x——Cocos2d-x 屏幕适配新解 – 兼容与扩展【转载】
  8. Node.js简单介绍
  9. Cocos2d-x多语言支持解决方式
  10. android 用ListView实现表格样式