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://127.0.0.1:8080/UserManagement/rest/UserService/users,然后查看以下结果。
恭喜您,您已成功创建了第一个 RESTful 应用程序。