這裡使用Eclipse來進行開發。
先在Eclipse新建一個名為「jaxrs-example」的【Dynamic Web Project】專案。
再來在
idv.jk.jaxrs套件下,新增一個名為「UserService.java」的類別:
package idv.jk.jaxrs;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/user")
public class UserService
{
@GET
@Path("/{name}")
public Response sayHello(@PathParam("name") String name)
{
String message = "Hello, " + name;
return Response.status(200).entity(message).build();
}
}
其中,宣告在UserService類別上的這個@Path("/user")是跟容器講,若是/user的URL,就交給我負責。
而在
sayHello上面的@Path("/{param}")是說在/user後面接的URL可視為一個參數,在@PathParam("name")可以將此參數補捉下來,傳入方法使用,如客戶端使用/user/bio來做請求,則在sayHello傳入的name參數值就會是bio。
再來在
web.xml中加入下面程式片段,來設定servlet-mapping:
這段設定用白話文來講,就是jaxrs-servlet org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages idv.jk.jaxrs 1 jaxrs-servlet /service/*
/service開頭的請求,都是用org.glassfish.jersey.servlet.ServletContainer這個類別來負責,而它會去idv.jk.jaxrs這個套件下去找,有沒有可以負責特定URL的類別,如上列的UserService類別就會是被設定為負責處理/service/user的請求,如:http://localhost:8080/jaxrs-example/service/user/bio,而前列URL中的bio,就會被捉出來當做傳入sayHello的參數。
一個簡單的JAX-RS應用程式只要上列兩個檔案的設定即可,再來啟動GlassFish並部署程式,成功之後,開啟瀏覽器,並在網址列輸入:http://localhost:8080/jaxrs-example/service/user/bio,網頁應為回應下列訊息:
參考來源:

沒有留言:
張貼留言