接下來我們開始使用 Jersey 框架編寫真實的 RESTful Web 服務(wù)。在開始使用 Jersey 框架編寫第一個示例之前,必須確保正確設(shè)置了 Jersey 環(huán)境,正如 RESTful Web 服務(wù) - 環(huán)境設(shè)置 教程中所闡述的。我還假設(shè)你掌握了一點點使用 Eclipse IDE 的基礎(chǔ)知識。
那么,讓我們開始編寫一個簡單的 Jersey 應(yīng)用程序吧,它將暴漏一個 Web 服務(wù)方法來顯示用戶列表。
第一步是使用 Eclipse IDE 創(chuàng)建一個動態(tài) Web 項目。遵循選項 File -> New -> Project,最后在向?qū)Я斜碇羞x擇 Dynamic Web Project 向?qū)?。然后在如下所示的向?qū)Т翱谥袑㈨椖棵麨?UserManagement:
http://wiki.jikexueyuan.com/project/restful/images/wizard.jpg" alt="wizard" />
一旦項目創(chuàng)建成功,在 Project Explorer 中就會得到如下所示的目錄結(jié)構(gòu):
http://wiki.jikexueyuan.com/project/restful/images/usermanagement_dir.jpg" alt="usermanagement_dir" />
我們把在項目中添加 Jersey 框架和它的依賴(庫)作為第二步。從下面下載的 jersey zip 文件夾目錄中把所有的 jars 復(fù)制到項目的 WEB-INF/lib 目錄中。
首先,右擊項目名 UserManagement,選擇上下文菜單中的選項:Build Path -> Configure Build Path 顯示 Java Build Path 窗口。
最后使用 Libraries 選項卡下面的 Add JARs 按鈕把 JARs 文件添加到 WEB-INF/lib 目錄中。
現(xiàn)在,讓我們在 UserManagement 項目下創(chuàng)建真實的源代碼文件。首先我們需要創(chuàng)建一個叫做 com.tutorialspoint 的包。要做到這一點,在包管理器中的 src 上右擊并遵循選項:New -> Package。
接下來我們會在 com.tutorialspoint 包下面創(chuàng)建 User.java,UserDao.java 以及 UserService.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 文件
下面的程序已經(jīng)被硬編碼以顯示用戶清單相關(guān)的功能。這里我們可以實現(xiàn)可能從數(shù)據(jù)庫或者任意資源中選擇用戶或者其他所需數(shù)據(jù)需要的業(yè)務(wù)邏輯。
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;
}
}
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();
}
}
這里有兩個關(guān)于主程序需要注意的要點,UserService.java:
我們需要創(chuàng)建一個 Web.xml 配置文件,這是一個 XML 文件,用于給我們的應(yīng)用程序指定 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 配置文件創(chuàng)建,就可以進入編譯和運行程序這一步。要做到這一點,使用 Eclipse 將應(yīng)用程序?qū)С鰹橐粋€ war 文件并部署到 Tomcat 中即可。要使用 eclipse 創(chuàng)建 WAR 文件,遵循選項 File -> export -> Web -> War File,最后選擇項目 UserManagement 和目標文件夾即可。要在 Tomcat 中部署 war 文件,把 UserManagement.war 放到 Tomcat 安裝目錄的 webapps 目錄中并啟動 Tomcat 即可。
我們使用 Postman 來測試我們的 Web 服務(wù),這是一個 Chrome 擴展。
建立一個到 UserManagement 獲取所有用戶列表的請求。把 http://localhost:8080/UserManagement/rest/UserService/users
放到 POSTMAN 中選擇 GET 請求,可以看到下面的結(jié)果。
http://wiki.jikexueyuan.com/project/restful/images/restful_postman.jpg" alt="restful_postman" />
恭喜,你已經(jīng)成功創(chuàng)建你的第一個 RESTful 應(yīng)用程序了。為了更進一步,讓我們在接下來的幾個章節(jié)中做一些有趣的事情。