一、环境
JetBrains14.2,tomcat8,Jersey2.13,maven3.3.9,jdk1.7
二、环境配置
1、创建一个maven项目RestDemo,目录结构如下:
2、修改pom.xml文件,如下:
<dependencies> <!-- Tomcat Servlet API --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-grizzly2-servlet</artifactId> <version>2.13</version> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet-core</artifactId> <version>2.13</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.13</version> </dependency> <!-- Required only when you are using JAX-RS Client --> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>2.13</version> </dependency> </dependencies>
3、在resources包下建一个HelloResource类
package com.lf.rest.resources; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; /** * Created by lenovo on 2018/1/6. */ @Path("/hello") public class HelloResource { @GET @Produces(MediaType.TEXT_PLAIN) public String sayHello(){ return " jersey hello world!"; } }4、修改web.xml,添加基于Servlet容器
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>TestJersey2.5</display-name> <!--1、通过加载resources包的形式,加载所有resources--> <!-- <servlet> <servlet-name>jersey_rest</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.lf.rest.resources</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey_rest</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping>--> <!--2、通过加载配置文件,加载指定的resources--> <servlet> <servlet-name>jersey_rest</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>com.lf.config.JerseyResourcesConfig</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey_rest</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
注意:方式一(注释掉的部分),通过加载resources包形式,加载所有的resources资源(是使用默认的资源加载器加载,需要给出资源所在的package),但是<param-name>的中间名称一定要是jersey.config.server.provider.packages,不要改变;
方式二、是自己定义的资源加载器加载想要的资源,这样可控性比较强,但是<param-name>的中间名称一定要是javax.ws.rs.Application,不要改变;JerseyResourcesConfig内容如下;
package com.lf.config; import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; import com.lf.rest.resources.HelloResource; import com.lf.rest.resources.UserResource; import com.lf.rest.resources.UserResource1; import org.glassfish.jersey.server.ResourceConfig; /** * Created by lenovo on 2018/1/6. */ public class JerseyResourcesConfig extends ResourceConfig { public JerseyResourcesConfig(){ register(HelloResource.class); } }5、发布程序到tomcat中,成功后输入:http://localhost:8080/RestDemo/rest/hello,显示界面如下表示成功
后续可以学习xml,json,jersey-client,集成到别的项目中等