用 Jersey 创建 REST 服务
如果 没有未自动生成 java ,可以自己创建补齐。
导入 eclipse 中方便开发。
可以内嵌 Jetty 、Tomcat 等 web 容器,这样就方便运行项目,进行调试
添加 maven 插件,嵌入 Tomcat 7
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<uriEncoding>UTF-8</uriEncoding>
<path>/</path>
</configuration>
</plugin>
</plugins>
修改 JUnit 的版本 ,如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
进行编译
mvn clean install
问题
添加
<dependency>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
进行编译
mvn clean install
运行 web 项目:
mvn tomcat7:run
自从,一个简单的 maven web 项目已经完成。
添加 Jersey 模块
这里用 jersey.version 变量来进行多个模块,相同版本的管理,其中 jersey-media-moxy 用来处理 json 的转换
在 pom.xml 中添加
<properties>
<jersey.version>2.14</jersey.version>
</properties>
此时,项目已经具备了开发 Jersey REST 的能力,下面添加代码
创建以下 java 文件
RestApplication.java
package com.waylau.rest;
import org.glassfish.jersey.moxy.json.MoxyJsonFeature;
import org.glassfish.jersey.server.ResourceConfig;
/**
* REST 主应用
*
* @author waylau.com
* 2015-1-12
*/
public class RestApplication extends ResourceConfig {
public RestApplication() {
//服务类所在的包路径
packages("com.waylau.rest.resource");
//注册 JSON 转换器
register(MoxyJsonFeature.class);
}
HelloResource.java
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/**
* 测试用的 Resource
*
* @author waylau.com
* 2015年1月12日
*/
@Path("hello")
public class HelloResource {
/**
* 方法处理 HTTP GET 请求. 返回给客户端的对象是
* 转成了"text/plain" 媒体类型
*
* @return String ,转成了 text/plain 响应
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it! Welcome to waylau's REST world!";
}
}
解释:在 hello 路径下,可以访问到 HelloResource 中的 getIt() 方法返回的资源。
在 web.xml 增加 Jersey 的过滤器
解释:所有的Jersey REST 接口都发布到 rest
路径下。
ok ,服务端代码敲完,现在开发客户端,打开 index.jsp ,添加如下
<a href="/rest/hello">hello world</a>
这句的含义是,调用 Jersey REST 发布的 /rest/hello
接口
执行 mvn tomcat7:run
首页是这样的
- 《Apache Maven 3.1.0 安装、部署、使用》:http://www.waylau.com/apache-maven-3-1-0-installation-deployment-and-use/
- 《使用maven编译Java项目》
- 《Jersey 2.x 用户指南》:https://github.com/waylau/Jersey-2.x-User-Guide