RESTful的概念:一種軟件架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和服務器交互類的軟件。基於這個風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制。該理念是由Roy Thomas Fielding在他2000年的博士論文中提出的。
實例:
首先需要導入所需的jar包:
activation-1.1.1.jar
asm-3.3.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jaxb-api-2.2.4.jar
jaxb-impl-2.2.4-1.jar
jersey-bundle-1.12.jar
jersey-client-1.12.jar
jersey-core-1.12.jar
jersey-json-1.12.jar
jersey-server-1.12.jar
jettison-1.1.jar
stax-api-1.0-2.jar
然後需要配置web.xml,用來將所有的 REST 請求發送到 Jersey 容器
<servlet>
<display-name>JAX-RS REST Servlet</display-name>
<servlet-name>JAX-RS REST Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<!-- com.sun.jersey.spi.container.servlet.ServletContainer
-->
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.web.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS REST Servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
其中參數名爲com.sun.jersey.config.property.packages所對應的值是com.web.rest,也就是說在包com.web.rest下聲明的所有RESTful的註釋的資源當客戶端發送請求時都將被激活。
例如:com.web.rest包下的類TestRest
@Path("/testRest")
public class TestRest {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello Jersey";
}
}
當我們在瀏覽器地址欄中輸入:http://localhost:8080/項目名稱/rest/testRest/時,發送請求後,這個請求會被送到Jersey 容器,然後根據http協議中的信息,進行判斷,調用相關的類方法,返回的數據可以以不同的形式響應客戶端。
@Path用於指定唯一的資源uri,由於com.sun.jersey.spi.spring.container.servlet.SpringServlet映射的路徑是/rest/*,當爲某一個類或方法指定@Path時,那麼他的真實uri爲:http://localhost:8080/項目名稱/rest/testRest
@GET:這意味着以下方法可以響應 HTTP GET 方法。常見的HTTP響應方式(GET、POST、PUT、DELETE)
@Produces:以純文本方式定義響應內容 MIME 類型。常見的MIME類型(XML,JSON,HTML)