天天看點

springmvc下Jersey 搭建RESTful服務1.整合2.配置3.編寫測試

1.整合

jersey所需要的開發包下載下傳: https://jersey.java.net/, 解壓jaxrs-ri-2.22.1檔案,得到以下目錄

springmvc下Jersey 搭建RESTful服務1.整合2.配置3.編寫測試
springmvc下Jersey 搭建RESTful服務1.整合2.配置3.編寫測試

将解壓檔案夾lib目錄的jar檔案複制到項目的WEB-INF/lib目錄中,ext目錄中的jar包根據自己所需  或者console報錯 引入 這是我的項目的lib目錄

springmvc下Jersey 搭建RESTful服務1.整合2.配置3.編寫測試
springmvc下Jersey 搭建RESTful服務1.整合2.配置3.編寫測試

2.配置

配置web.xml

<!-- REST配置 -->
	<servlet>
		<servlet-name>jerseyServlet</servlet-name>
		<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
		<init-param>
			<param-name>javax.ws.rs.Application</param-name>
			<param-value>com.znie.mypro.service.RestApp</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>jerseyServlet</servlet-name>
		<url-pattern>/service/*</url-pattern>
	</servlet-mapping>
	<!-- REST配置 結束 -->
           

com.znie.mypro.service.RestApp檔案  指定服務類所在的包

package com.znie.mypro.service;

import javax.ws.rs.ApplicationPath;

import org.glassfish.jersey.server.ResourceConfig;


@ApplicationPath("/")
public class RestApp  extends ResourceConfig{
	
	public RestApp(){
		// 服務類所在的包路徑
		packages("com.znie.mypro.service");
	}

}
           

3.編寫測試

編寫hello測試

package com.znie.mypro.service;

import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import com.alibaba.fastjson.JSON;

@Path("/hello")
public class HelloService {
	
	@GET
	@Path("/index")
	@Produces(MediaType.APPLICATION_JSON)
	public String hello() {
		Map m = new HashMap();
		m.put("hello","world");
		m.put("hello2","world");
		return JSON.toJSONString(m);
	}
	
	@GET
	@Path("/post")
	@Produces(MediaType.APPLICATION_JSON)
	@Consumes(MediaType.APPLICATION_JSON)
	public String post(@QueryParam("test")String test) {
		Map<String,String> m = new HashMap<String,String>();
		m.put("test",test);
		m.put("hello2","world");
		return JSON.toJSONString(m);
	}
}
           

main測試

package com.znie.mypro.service;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;

public class HelloClient {
	public static void main(String[] args) {
		try {
			Client client = ClientBuilder.newClient();

			WebTarget target = client
					.target("http://localhost:8081/mypro/service/hello")
					.path("/post").queryParam("test", "111");

			Response res = target.request().accept("application/json").get();

			if (res.getStatus() != 200) {
				throw new RuntimeException("Failed : HTTP error code : "
						+ res.getStatus());
			}
			String output = res.readEntity(String.class);

			System.out.println(res.getStatus() + "\n……Output from Server……");
			System.out.println(output);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}