博主自序:
最近一直在弄如何使用jersey来搭建一个REST接口服务器,在网上看的资料都不行,不知道是不是包弄错了,今天自己琢磨了大半天,总算搞定了最基本的Hello world.
博主最近比较忙,也没时间去研究原理,就直接开始说如何能实现。如果看了文章的朋友有问题的话,可以留言交流。
第一步:导入jar包(maven工程直接添加依赖)
其实一个最基本的REST接口服务器只需要导入一个包,就可以实现Hello world了,这就是神奇的jersey-bundle-1.18.1.jar
第二步:配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance http://www.springmodules.org/schema/cache/springmodules-cache.xsd http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd
">
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<!-- 包含资源的 Java 包,资源类是一个简单的 Java 对象 (POJO),可以实现任何接口 -->
<param-name>
com.sun.jersey.config.property.packages
</param-name>
<param-value>com.rest.server.controller</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>
</web-app>
在web.xml中我们配置servlet的时候,初始化了一个属性:com.sun.jersey.config.property.packages
这个属性指明系统入口,也就是controller所在的包路径
package com.rest.server.controller;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/**
* REST接口示例控制器
* @author ll
* @version $Id: DemoController.java, v 0.1 Apr 17, 2015 1:44:08 PM ll Exp $
*/
@Path("demo")
public class DemoController {
//@Path 定义资源基 URI。由上下文根和主机名组成,资源标识符类似于 http://localhost:8080/Jersey/rest/demo
//@GET:这意味着以下方法可以响应 HTTP GET 方法。
//@Produces:描述响应内容的格式
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("sayHello")
public String sayHello() {
System.out.println("Server is starting working.");
return "Hello, jersey.";
}
}