• Jersey(1.19.1)


    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>
    View Code

    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>
  • 相关阅读:
    316 Remove Duplicate Letters 去除重复字母
    315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
    313 Super Ugly Number 超级丑数
    312 Burst Balloons 戳气球
    309 Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
    Java 类成员的初始化顺序
    JavaScript 全局
    HTML字符实体
    Java中的toString()方法
    JavaScript 弹窗
  • 原文地址:https://www.cnblogs.com/huey/p/5376424.html
Copyright © 2020-2023  润新知