Jersey(1.19.1) - Hello World, Get started with a Web application
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>
Jersey(1.19.1) - Hello World, Get started with a Web application的更多相关文章
- Jersey(1.19.1) - Deploying a RESTful Web Service
JAX-RS provides a deployment agnostic abstract class Application for declaring root resource and pro ...
- Jersey(1.19.1) - Hello World, Get started with Jersey using the embedded Grizzly server
Maven Dependencies The following Maven dependencies need to be added to the pom: <dependency> ...
- Jersey(1.19.1) - JSON Support
Jersey JSON support comes as a set of JAX-RS MessageBodyReader<T> and MessageBodyWriter<T&g ...
- Jersey(1.19.1) - Root Resource Classes
Root resource classes are POJOs (Plain Old Java Objects) that are annotated with @Path have at least ...
- Jersey(1.19.1) - WebApplicationException and Mapping Exceptions to Responses
Previous sections have shown how to return HTTP responses and it is possible to return HTTP errors u ...
- Jersey(1.19.1) - Life-cycle of Root Resource Classes
By default the life-cycle of root resource classes is per-request, namely that a new instance of a r ...
- Jersey(1.19.1) - Client API, Uniform Interface Constraint
The Jersey client API is a high-level Java based API for interoperating with RESTful Web services. I ...
- Jersey(1.19.1) - Client API, Ease of use and reusing JAX-RS artifacts
Since a resource is represented as a Java type it makes it easy to configure, pass around and inject ...
- Jersey(1.19.1) - Client API, Overview of the API
To utilize the client API it is first necessary to create an instance of a Client, for example: Clie ...
随机推荐
- rop框架签名功能控制
平台级控制: 通过<rop:annotation-driven/>的 sign-enable 属性即可开启或关闭服务平台签名验证功能:<rop:annotation-driven s ...
- [oracle]一个最简单的oracle存储过程"proc_helloworld"
1.编写.编写一个最最简单的存储过程,给它起个名字叫做proc_helloworldCREATE OR REPLACE PROCEDURE proc_helloworldISBEGIN DBMS_ ...
- UVA1395
// UVa1395 Slim Span // Rujia Liu #include<cstdio> #include<cmath> #include<cstring&g ...
- 教你看懂邮件头信息<转载>
MIME对于邮件系统的扩展是巨大的,因为在MIME出现以前,信件内容如果要包括声音和动画,就必须把它变为ASCII码或把二进制的信息变成可以传送的编码标准,而接收方必须经过解码才可以获得声音和图画信息 ...
- xcode7.3 iTunes Store operation failed问题
升级了7.3,真心的不好用啊,bug一堆,写个代码,引入的类根本找不到,必须要command+b 重新编译一遍,现在连提交appstore都有问题. 果断用了 Application Loader上传 ...
- Struts2内建校验器(基于校验框架的文件校验)
位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框 ...
- 跨平台实现wchar_t转成char
位宽.其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了. wchar_t 转换为char 的代码如下: 有如下的wchar_t和char变量 wchar_t w_cn ...
- 判断IE中iframe完美加载完毕的方法
转: var iframe = document.createElement("iframe"); iframe.src = "http://www.planabc.ne ...
- mysql_upgrade命令
mysql 创建存储过程失败.查看错误日志,发现如下信息:*********************************************************************** ...
- Redis 连接
Redis 连接命令主要是用于连接 redis 服务. 实例 以下实例演示了客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行: redis 127.0.0.1:6379> ...