jersey 튜토리얼
저지 시작하기
수색…
비고
이 섹션에서는 저지가 무엇인지, 그리고 왜 개발자가 그것을 사용하고 싶어하는지에 대한 개요를 제공합니다.
또한 저지 안에있는 큰 주제를 언급하고 관련 주제에 링크해야합니다. 저지에 대한 설명서가 새로운 기능이므로 해당 관련 항목의 초기 버전을 만들어야 할 수도 있습니다.
설치 또는 설정
기본 요구 사항은 자바가 system.there에 설치되어야한다는 것입니다. 이클립스 IDE에서 저지를 설정하는 두 가지 옵션이 먼저 수동으로이 링크에서 저지 항아리를 다운로드합니다. 프로젝트에서 ->이 라이브러리를 추가 할 수있는 외부 항아리 추가 거기 [ https://jersey.java.net/download.html] [1 ]
두 번째 옵션은 javen jars에 대한 maven 종속성을 추가해야하는 maven을 통해 자동으로 다운로드됩니다.
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.6</version>
</dependency>
Hello World 예제
이것은 GET 요청을 호출 할 때 hello world 일반 텍스트 메시지를 출력으로 가져 오는 간단한 예입니다.
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class HelloExample {
@GET
@Produces(MediaType.APPLICATION_TEXT)
public String getUsers(){
return "Hello World";
}
}
web.xml 파일에 다음을 추가하여 api를 완전히 설정하십시오.
<display-name>User Message</display-name>
<servlet>
<servlet-name>Jersey REST Api</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servletclass>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>your_package_name</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Api</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
그런 다음 서버에이 파일을 배포 한 다음 브라우저에서 다음 URL을 열어 출력을 얻어야합니다. your_server_name / your_appl_name / rest / hello.
Jersey의 CRUD 운영 사례
이 예제는 REST 리소스에 대해 CRUD 작업을 수행 할 때 GET, POST, PUT 및 DELETE HTTP 메서드를 사용하는 방법을 보여줍니다.
아래의 소프트웨어, 프레임 워크 및 도구를 사용하고 있습니다.
- 저지 2.25.1
- JDK 1.7.x (Java 7)
- Eclipse IDE Kepler
- Apache Maven 3.3.9
- Apache Tomcat 7.x
필요한 저지 응용 프로그램 만들기에 대한 아래 단계를 따르십시오.
1 단계 : Eclipse IDE에서 maven-archetype-webapp archetype을 사용하여 File-> New-> Maven Project를 선택하여 새 maven 프로젝트 만들기
2 단계 : 프로젝트의 pom.xml 파일에 아래의 의존성을 추가합니다.
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<!-- if your container implements Servlet API older than 3.0, use "jersey-container-servlet-core" -->
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.25.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
3 단계 : 응용 프로그램 자원 구성
org.glassfish.jersey.server.ResourceConfig 클래스를 확장 한 클래스를 생성하고 생성자에 JAX-RS 컴포넌트를 등록하십시오. 여기에서는 com.stackoverflow.ws.rest 패키지 아래에 모든 리소스를 등록합니다.
package com.stackoverflow.ws.rest;
import org.glassfish.jersey.server.ResourceConfig;
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("com.stackoverflow.ws.rest");
}
}
4 단계 : id 및 name과 같은 속성을 사용하여 Employee와 같은 간단한 Java bean을 만듭니다. equals () 및 hashCode () 메서드를 재정의합니다. 또한 클래스에는 public 생성자가 없습니다. 아래 코드를 찾으십시오.
직원 Java bean 클래스
package com.stackoverflow.ws.rest.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Employee {
private int id;
private String name;
public Employee(){
super();
}
public Employee(int id, String name) {
super();
this.id = id;
this.name = name;
}
@XmlElement
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Employee)) {
return false;
}
Employee other = (Employee) obj;
if (id != other.id) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
return true;
}
}
코드에 대한 추가 정보
- @XmlRootElement 및 @XmlElement 주석은 JAXB가 요청 및 응답 메시지를 마샬링 및 언 마샬하는 데 필요합니다.
5 단계 : 아래 주어진대로 직원 자원 만들기 :
EmployeeResource 서비스 클래스
package com.stackoverflow.ws.rest;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import com.stackoverflow.ws.rest.model.Employee;
@Path("/employees")
public class EmployeeResource {
private static Map<Integer, Employee> employeesRepository = new HashMap<Integer, Employee>();
// Read - get all the employees
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getEmployees() {
List<Employee> employees = new ArrayList<Employee>(
employeesRepository.values());
GenericEntity<List<Employee>> entity = new GenericEntity<List<Employee>>(
employees) {
};
return Response.ok(entity).build();
}
// Read - get an employee for the given ID
@GET
@Path("/{key}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getEmployee(@PathParam("key") int key) {
if (employeesRepository.containsKey(key)) {
return Response.ok(employeesRepository.get(key)).build();
} else {
return Response.status(404).build();
}
}
// Create - create an employee
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response addEmployee(Employee employee, @Context UriInfo uriInfo) {
if(employee.getId()!=0){
return Response.status(400).build();
}
int createdEmployeeId = 1;
if(!employeesRepository.isEmpty()){
createdEmployeeId = Collections.max(employeesRepository.keySet()) + 1;
}
employee.setId(createdEmployeeId);
employeesRepository.put(createdEmployeeId, employee);
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
URI createdURI = builder.path(Integer.toString(createdEmployeeId)).build();
return Response.created(createdURI).build();
}
// Update - updates an existing employee
@PUT
@Path("/{key}")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response updateEmployee(@PathParam("key") int key, Employee employee) {
int status = 0;
if (employeesRepository.containsKey(key)) {
// update employeeRepostory
employeesRepository.put(key, employee);
status = 204;
} else {
status = 404;
}
return Response.status(status).build();
}
// Delete - deletes an existing employee
@DELETE
@Path("/{key}")
public Response deleteEmployee(@PathParam("key") int key) {
employeesRepository.remove(key);
return Response.noContent().build();
}
// Delete - deletes all the employees
@DELETE
public Response deleteEmployees() {
employeesRepository.clear();
return Response.noContent().build();
}
}
참고 : POST 및 PUT 메서드를 사용하여 리소스를 만들거나 업데이트 할 수 있지만 여기서는 POST 메서드가 기존 리소스를 업데이트하고 PUT 메서드가 새 리소스를 만들지 못하도록 제한하고 있습니다. 그러나이 방법의 사용법에 대해 더 알고 싶으면이 링크 로 이동 하십시오.
6 단계 : 마지막으로 Jersey Servlet 구성을 배치 설명자 파일 (web.xml)에 추가하십시오.
<web-app>
<display-name>Jersey 2.25.1 based REST Application</display-name>
<servlet>
<servlet-name>JerseyFrontController</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.stackoverflow.ws.rest.MyApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>JerseyFrontController</servlet-name>
<url-pattern>/ws/rest/*</url-pattern>
</servlet-mapping>
</web-app>
7 단계 : Clean and maven은 프로젝트의 폴더 구조를 확인한 후 프로젝트를 빌드합니다.
8 단계 : Apache Tomcat에서 응용 프로그램을 실행하십시오.
이제 크롬이나 SOAP UI의 POSTMAN 확장과 같은 일부 REST 클라이언트를 사용하여 적절한 HTTP 메소드를 사용하여 http : // {hostname} : {portnumber} / {projectName / applicationName} / ws / rest / employees로 이동하고 잊지 마세요. HTTP 요청의 값으로 application / json 또는 application / xml 과 함께 Accept 헤더를 추가 하십시오 .