RESTful Web Services – 第一个应用程序

RESTful Web Services – 第一个应用程序

让我们使用Jersey框架开始编写实际的RESTful Web服务。在您开始使用Jersey框架编写第一个示例之前,您必须确保已正确设置了Jersey环境,如“RESTful Web服务 – 环境设置”章节所述。在这里,我也假设您对Eclipse IDE有一些工作知识。

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

创建一个Java项目

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

RESTful Web Services - 第一个应用程序

成功创建您的项目后,您的“Project Explorer”将包含以下内容。

RESTful Web Services - 第一个应用程序

添加所需的库

第二步让我们在项目中添加Jersey Framework和它的依赖项(库)。将下载的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构建路径窗口。

现在,使用“库”选项卡下的“添加JARs”按钮将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", "教师"); 
            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 文件,按照以下选项进行操作: File → export → Web → War File 最后选择项目 UserManagement 和目标文件夹。要在 Tomcat 中部署 war 文件,请将 UserManagement.war 放在 Tomcat Installation Directory → webapps 目录 中,并启动 Tomcat。

运行程序

我们使用 Chrome 扩展程序 Postman 来测试我们的 Web 服务。

向 UserManagement 发出请求以获取所有用户的列表。在 POSTMAN 中以 GET 请求和 http://localhost:8080/UserManagement/rest/UserService/users 为地址,并查看以下结果。

RESTful Web Services - 第一个应用程序

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程