RESTful Web 服务 - 第一个应用程序


让我们开始使用 Jersey 框架编写实际的 RESTful Web 服务。在开始使用 Jersey 框架编写第一个示例之前,您必须确保已按照RESTful Web 服务 - 环境设置一章中的说明正确设置 Jersey 环境。在这里,我还假设您对 Eclipse IDE 有一点使用知识。

因此,让我们继续编写一个简单的 Jersey 应用程序,它将公开一个 Web 服务方法来显示用户列表。

创建 Java 项目

第一步是使用 Eclipse IDE 创建动态 Web 项目。按照选项“文件”→“新建”→“项目”,最后从向导列表中选择“动态 Web 项目”向导。现在使用向导窗口将您的项目命名为UserManagement,如以下屏幕截图所示 -

动态 Web 项目向导

成功创建项目后,您的项目资源管理器中将包含以下内容-

用户管理目录

添加所需的库

第二步,让我们在项目中添加 Jersey Framework 及其依赖项(库)。将下载球衣 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 并按照选项 - New → Package

接下来我们将在com.tutorialspoint包下创建UserService.java、User.java、UserDao.java文件。

用户.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(); 
      } 
   }    
}

用户服务.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(); 
   }  
}

主程序有两点需要注意,

用户服务.java

  • 第一步是使用 UserService 的 @Path 注释指定 Web 服务的路径。

  • 第二步是使用 UserService 方法的 @Path 注释指定特定 Web 服务方法的路径。

创建 Web.xml 配置文件

您需要创建一个 Web xml 配置文件,该文件是一个 XML 文件,用于为我们的应用程序指定 Jersey 框架 servlet。

网络.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 文件”,最后选择项目“用户管理”和目标文件夹。要在Tomcat中部署war文件,请将UserManagement.war放在Tomcat安装目录→ webapps目录中并启动Tomcat。

运行程序

我们正在使用Postman(一个 Chrome 扩展程序)来测试我们的网络服务。

向 UserManagement 发出请求以获取所有用户的列表。将 http://localhost:8080/UserManagement/rest/UserService/users 放入 POSTMAN 中并使用 GET 请求,然后看到以下结果。

RESTful API,所有用户

恭喜,您已成功创建第一个 RESTful 应用程序。