在網路上查到的資料都稍舊了些,所以自己來寫一篇囉!
定義:Jersey client API 是一組非常 High level API,可以讓我們很輕鬆的開發 Restful web services client。
以下只寫到出現 Hello World 即停止。程式結構如下圖:
一開始同樣開一個 Dynamic Web Project,並轉換成 Maven Project,在 pom.xml 中加入以下資訊:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.20</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.20</version>
</dependency>
Version 2.27 經測試會造成 Tomcat 8.5 啟動出現錯誤訊息、原因不明、欲使用最新版的參考一下。
Jersey 2.X 後可以不用 web.xml 來控制程式流向,程式碼如下:
- MyApplication
package com.test.jersey;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("api") //Web 進入點
public class MyApplication extends ResourceConfig {
public MyApplication() {
//指定 Package
packages("com.test.jersey");
}
}
- HelloJersey
package com.test.jersey;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("/hello") //提供服務的 URL
public class HelloJersey {
@GET //對應的要求方法:可以是 GET, POST, PUT, DELETE
public String sayHello() {
return "Hello, Jersey";
}
}
- 執行結果:
以下為使用 web.xml 的寫法:將 MyApplication.java 去除(不寫)、HelloJersey.java 內容不變、 web.xml 增加以下內容:
- web.xml
<servlet>
<description>JAX-RS Tools Generated</description>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Servlet 初始化參數 -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<!-- 指定 Package -->
<param-value>com.test.jersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<!-- Web 進入點 -->
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
- 執行結果:
特別注意執行結果中、Web 的進入點是不同的、由此可證明2個不同寫法確實都是可以執行的。