因为看Saiku的源码用到了Jersey开源的RESTful框架,所以稍微简单的介绍下入门
JDK 1.7 Jersey 2.10 开发工具IDEA Maven3
目标:搭建一个最简单的
1、创建一个Maven项目
因为我想看这个开发的基本上不可能不会建立项目吧,如果不会Maven最好还是学习下,因为JAR包的依赖真的是恶心,受不鸟。
2、加入Jersey依赖的Jar
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.10.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-processing</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.10.1</version>
</dependency>
其中包含了最基本的Jersey包和对Bean实体的扩展,后三个包的作用是可以把Bean对象直接转换成Json或者XML,的确是很方便
3、那让我们开发RESTful的响应吧
package com.rest;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 14-7-17
* Time: 下午3:11
* To change this template use File | Settings | File Templates.
*/
@Path("/aaaaaaaaa") //这个是访问当前资源的根路径
public class TwoResource {
@GET //请求的类型是GET请求,如果不了解去了解下最基本的REST编程,
@Path("queryBean") //这个是访问的路径 访问这里就是:地址:端口:应用名+前缀/aaaaaaaaa/queryBean ,前缀后面会说到
@Produces(MediaType.APPLICATION_JSON) //这里表示返回的类型是XML ,这里就是省去了Bean转JSON的工作
public List<Sales> getUsers(){
List<Sales> user=new ArrayList<Sales>();
Sales s1=new Sales();
s1.setName("s1");
Sales s2=new Sales();
s2.setName("s2");
user.add(s1);user.add(s2);
return user;
}
@GET //这种没有Path的方法,如果请求类型为GET,且为根路径就会访问这里
@Produces(MediaType.APPLICATION_JSON)
public String test(){
return "success";
}
@Context
Request request;
@GET
@Path("user/{username}") //这种URL的链接就是参数,会传递到请求来
@Produces(MediaType.TEXT_PLAIN)
public String getIt(@PathParam("username") String username){
System.out.print("the name is "+username);
return "get it";
}
}
里面都有注视了,应该可以看明白,注意到这里了进行测试还是不可以 的,还要配置Web.xml
4、配置web.xml
<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.rest</param-value><!-- 这里的配置扫描的包的路径,就是我们的服务的包的路径 -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
然后你就可以启动测试了
5、启动、测试!咔咔咔咔
第一个连接:
插件是Chrome的Postman测试这类Http服务很用用。
6、结束!