首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Jersey + Tomcat 實現 RESTful 風格服務:Maven 依賴、資源類、web.xml 配置全流程

     編輯:Java 綜合教學

Jersey + Tomcat 構建 RESTful 服務實戰

環境

  • IDE:IntelliJ IDEA 15.0.2
  • Jersey:1.3
  • Tomcat:7.0
  • Maven:3.3.3

1. Maven 依賴

<dependencies>
    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope></dependency>
    <dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-core</artifactId><version>1.3</version></dependency>
    <dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-server</artifactId><version>1.3</version></dependency>
    <dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>1.3</version></dependency>
    <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency>
    <dependency><groupId>javax.ws.rs</groupId><artifactId>jsr311-api</artifactId><version>1.1.1</version></dependency>
    <dependency><groupId>asm</groupId><artifactId>asm</artifactId><version>3.2</version></dependency>
</dependencies>

2. 實體類 Student

@XmlRootElement
public class Student {
    private int id; private String name; private String dept;
    // 構造器、getter/setter 省略
}

3. 資源類 RestWsDemo

@Path("/students")
public class RestWsDemo {
    private static Map<Integer,Student> studentList = new HashMap<>();
    private static int index = 1;
    static {
        studentList.put(index, new Student(index++, "Frank", "CS"));
        studentList.put(index, new Student(index++, "Jersey", "Math"));
    }

    @GET @Path("{studentid}") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Student getMetadata(@PathParam("studentid") int studentid) {
        return studentList.getOrDefault(studentid, new Student(0, "Nil", "Nil"));
    }

    @GET @Path("list") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Student> getAllStudents() {
        return new ArrayList<>(studentList.values());
    }

    @POST @Path("add") @Produces("text/plain")
    public String addStudent(@FormParam("name") String name, @FormParam("dept") String dept) {
        studentList.put(index, new Student(index++, name, dept));
        return String.valueOf(index-1);
    }

    @DELETE @Path("delete/{studentid}") @Produces("text/plain")
    public String removeStudent(@PathParam("studentid") int studentid) {
        return studentList.remove(studentid) != null ? "true" : "failed!";
    }

    @PUT @Path("put") @Produces("text/plain")
    public String putStudent(@QueryParam("studentid") int studentid,
                             @QueryParam("name") String name,
                             @QueryParam("dept") String dept) {
        if (!studentList.containsKey(studentid)) return "failed!";
        studentList.put(studentid, new Student(studentid, name, dept));
        return String.valueOf(studentid);
    }
}

4. web.xml 配置

<servlet>
    <servlet-name>jerseyws</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
        <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>cz.service</param-value> <!-- 資源類所在包 -->
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jerseyws</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

5. 測試

啟動 Tomcat,訪問 https://localhost:8081/rest/students/list 返回 XML/JSON 列表。

測試結果

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved