RESTful Web Services示例程式

讓我們使用Jersey框架開始編寫實際的RESTful web服務。 在開始使用Jersey框架編寫第一個例子,必須確保設置環境REST Web服務正常。我也假設你有一點點的使用Eclipse IDE工作的經驗。

因此,讓我們繼續編寫一個簡單的應用程式Jersey將公開一個Web服務方法來顯示用戶列表。

第1步 - 創建Java專案:

第一步是創建使用Eclipse IDE動態Web專案。按照選項 File -> New -> Project 並最後選擇 Dynamic Web Project 從嚮導列表嚮導。現在使用的嚮導窗口如下專案命名為UserManagement:

Dynamic Web Project Wizard

一旦專案成功創建,目錄結構在 Project Explorer:

Usermanagement Directories

第2步 - 添加必需的庫:

第二步,讓我們在專案中添加Jersey框架和它的依賴(庫)。複製所有jar檔在下載ZIP的jersey檔夾的目錄下麵的所有檔到專案的WEB-INF/ lib目錄下。

  • \jaxrs-ri-2.17\jaxrs-ri\api

  • \jaxrs-ri-2.17\jaxrs-ri\ext

  • \jaxrs-ri-2.17\jaxrs-ri\lib

現在,右鍵點擊你的專案名稱用戶管理,然後按照下麵選項中的上下文菜單: Build Path -> Configure Build Path 顯示Java構建路徑窗口。

現在,使用添加JAR檔可用按鈕下的庫選項卡,添加JAR檔到WEB-INF/lib目錄下。

第3步 - 創建原始檔案:

現在,讓我們在UserManagement 專案中創建實際的原始檔案。首先,我們需要創建一個名為包 com.zaixian. 要做到這一點,右鍵單擊src在包資源管理部分並按照選項: New -> Package.

下一步,我們將創建 User.java, UserDao.java, 和 UserService.java 檔在 com.zaixian 包下.

File - User.java

package com.zaixian;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "user")
public class User implements Serializable {

   private static final long serialVersionUID = 1L;
   private int id;
   private String name;
   private String profession;

   public User(){}

   public User(int id, String name, String profession){
      this.id = id;
      this.name = name;
      this.profession = profession;
   }

   public int getId() {
      return id;
   }

   @XmlElement
   public void setId(int id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   @XmlElement
   public void setName(String name) {
      this.name = name;
   }
   public String getProfession() {
      return profession;
   }
   @XmlElement
   public void setProfession(String profession) {
      this.profession = profession;
   }
}

File - UserDao.java

下麵的程式已經被硬編碼為顯示列出來的用戶的功能。在這裏,可以實現所需的業務邏輯,你可能讀取用戶,或從資料庫及任何其他資源所需的數據。

package com.zaixian;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class UserDao {
   public List<User> getAllUsers(){
      List<User> userList = null;
      try {
         File file = new File("Users.dat");
         if (!file.exists()) {
            User user = new User(1, "Mahesh", "Teacher");
            userList = new ArrayList<User>();
            userList.add(user);
            saveUserList(userList);
         }
         else{
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            userList = (List<User>) ois.readObject();
            ois.close();
         }
      } catch (IOException e) {
         e.printStackTrace();
      } catch (ClassNotFoundException e) {
         e.printStackTrace();
      }
      return userList;
   }
}

File - UserService.java

package com.zaixian;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/UserService")
public class UserService {

   UserDao userDao = new UserDao();

   @GET
   @Path("/users")
   @Produces(MediaType.APPLICATION_XML)
   public List<User> getUsers(){
      return userDao.getAllUsers();
   }
}

有以下兩個要點需要注意下麵的主程序,UserService.java:

  1. 第一步是指定用於使用@Path注釋到UserService的Web服務的路徑。

  2. 第二個步驟是,以指定用於使用@Path注釋到UserService的方法的特定web服務方法的路徑。

第4步 - 創建web.xml配置檔:

需要創建一個Web XML配置檔,該檔是一個XML檔,用於指定Jersey框架的servlet應用。

File - 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_3_0.xsd"
   id="WebApp_ID" version="3.0">
   <display-name>User Management</display-name>
   <servlet>
      <servlet-name>Jersey RESTful Application</servlet-name>
      <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
         <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.zaixian</param-value>
         </init-param>
      </servlet>
   <servlet-mapping>
   <servlet-name>Jersey RESTful Application</servlet-name>
      <url-pattern>/rest/*</url-pattern>
   </servlet-mapping>
</web-app>

第5步 - 部署程式

一旦你使用創建源和Web配置檔完成,這一步是準備好編譯和運行程式。要做到這一點,使用Eclipse,導出您的應用程式為war檔,並部署在Tomcat中。 要使用eclipse創建WAR檔,按照選項 File -> export -> Web > War File 最後選擇專案UserManagement和目標檔夾。 要在Tomcat部署WAR檔,將用戶Management.war在Tomcat的安裝目錄 > webapps 目錄並啟動Tomcat。

第6步 - 運行程式

我們使用Postman,一個Chrome擴展來測試Web服務。

提出一個請求到UserManagement,讓所有的用戶列表。http://localhost:8080/UserManagement/rest/UserService/users POSTMAN使用GET請求,看看下麵的結果。

RESTful API, All users

恭喜你,已經創建了第一個基於REST的應用成功。此外,讓我們開始做一些更有趣事情在接下來的幾章。


上一篇: RESTful環境安裝設置 下一篇: RESTful資源