RESTful Web 服務 - 第一個應用
讓我們開始使用 Jersey 框架編寫實際的 RESTful Web 服務。在使用 Jersey 框架編寫第一個示例之前,您需要確保已正確設定 Jersey 環境,如RESTful Web 服務 - 環境設定章節中所述。在這裡,我還假設您對 Eclipse IDE 有一點工作經驗。
因此,讓我們繼續編寫一個簡單的 Jersey 應用程式,該應用程式將公開一個 Web 服務方法來顯示使用者列表。
建立 Java 專案
第一步是使用 Eclipse IDE 建立一個動態 Web 專案。選擇檔案 → 新建 → 專案,然後從嚮導列表中選擇動態 Web 專案嚮導。現在,使用嚮導視窗將您的專案命名為UserManagement,如下面的螢幕截圖所示:
專案成功建立後,您的專案資源管理器中將包含以下內容:
新增所需的庫
第二步,讓我們在專案中新增 Jersey 框架及其依賴項(庫)。將下載的 jersey zip 資料夾中以下目錄下的所有 jar 檔案複製到專案的 WEB-INF/lib 目錄中。
- \jaxrs-ri-2.17\jaxrs-ri\api
- \jaxrs-ri-2.17\jaxrs-ri\ext
- \jaxrs-ri-2.17\jaxrs-ri\lib
現在,右鍵單擊您的專案名稱UserManagement,然後選擇上下文選單中提供的選項:構建路徑 → 配置構建路徑,以顯示 Java 構建路徑視窗。
現在,使用庫選項卡下提供的新增 JAR按鈕新增 WEBINF/lib 目錄中存在的 JAR 檔案。
建立原始檔
現在讓我們在UserManagement專案下建立實際的原始檔。首先,我們需要建立一個名為com.tutorialspoint的包。為此,右鍵單擊包資源管理器部分中的 src,然後選擇:新建 → 包。
接下來,我們將在 com.tutorialspoint 包下建立UserService.java、User.java、UserDao.java檔案。
User.java
package com.tutorialspoint;
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;
}
}
UserDao.java
package com.tutorialspoint;
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;
}
private void saveUserList(List<User> userList){
try {
File file = new File("Users.dat");
FileOutputStream fos;
fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(userList);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
UserService.java
package com.tutorialspoint;
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
第一步是使用 @Path 註解為 UserService 指定 Web 服務的路徑。
第二步是使用 @Path 註解為 UserService 的方法指定特定 Web 服務方法的路徑。
建立 Web.xml 配置檔案
您需要建立一個 Web xml 配置檔案,它是一個 XML 檔案,用於為我們的應用程式指定 Jersey 框架 servlet。
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.tutorialspoint</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
部署程式
完成原始檔和 Web 配置檔案的建立後,您就可以進行編譯和執行程式了。為此,使用 Eclipse 將應用程式匯出為 war 檔案,並將其部署到 Tomcat 中。
要使用 Eclipse 建立 WAR 檔案,請選擇檔案 → 匯出 → Web → WAR 檔案,最後選擇專案 UserManagement 和目標資料夾。要將 war 檔案部署到 Tomcat,請將 UserManagement.war 放置到Tomcat 安裝目錄 → webapps 目錄中,然後啟動 Tomcat。
執行程式
我們使用Postman(一個 Chrome 擴充套件程式)來測試我們的 Web 服務。
向 UserManagement 發出請求以獲取所有使用者的列表。在 POSTMAN 中使用 GET 請求輸入 https://:8080/UserManagement/rest/UserService/users,然後檢視以下結果。
恭喜您,您已成功建立了第一個 RESTful 應用程式。