基于RESTful的架构(四)
基于JAX-RS的具体实现
1.1. Jersey示例
Hello World:第一个 Jersey Web 项目
创建一个名为 “Jersey” 的WEB应用程序
设置 Jersey 的环境
核心服务器:jersey-core.jar,jersey-server.jar,jsr311-api.jar,asm.jar
核心客户端:(用于测试)jersey-client.jar
JAXB 支持:(在高级样例中使用)jaxb-impl.jar,jaxb-api.jar,activation.jar,stax-api.jar,wstx-asl.jar
JSON 支持:(在高级样例中使用)jersey-json.jar
在 web.xml 文件中定义 Jersey servlet 调度程度
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>sample.hello.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
现在您将编写一个名为 HelloResource 的资源,它接受 HTTP GET
并响应 “Hello Jersey”。
com.dhgate.rest中的HelloResource
@Path("/hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello Jersey";
}
}
代码中几个需要强调的地方:
资源类(Resource Class):注意,资源类是一个简单的 Java 对象 (POJO),可以实现任何接口。这增加了许多好处,比如可重用性和简单。
注释(Annotation):在 javax.ws.rs.* 中定义,是 JAX-RS (JSR 311) 规范的一部分。
@Path:定义资源基 URI。由上下文根和主机名组成,资源标识符类似于http://localhost:8080/Jersey/rest/hello。
@GET:这意味着以下方法可以响应 HTTP GET 方法。
@Produces:以纯文本方式定义响应内容 MIME 类型。
测试 Hello 应用程序
要测试应用程序,可以打开您的浏览器并输入 URL http://<host>:<port>/<appctx>/rest/hello。您将看到响应 “Hello Jersey”。