1. 程式人生 > >Jersey實現Restful服務

Jersey實現Restful服務

1.建立maven-web工程,後面就是正常的maven工程建立流程。

2.新增Jersey框架的maven檔案。

複製程式碼
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.restful</groupId>
  <artifactId>jerseyDemo</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>jerseyDemo Maven Webapp</name>
  <url>http://
maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.9</version> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>2.9</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.9</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.19.3</version> </dependency> </dependencies> <build> <finalName>jerseyDemo</finalName> </build> </project>
複製程式碼

3.Restful介面定義。

複製程式碼
package com.restful.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.restful.entity.PersonEntity;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by XuHui on 2017/8/2. */ @Path("/JerseyService") public class JerseyService { private static Map<String, PersonEntity> map = new HashMap<String, PersonEntity>(); @GET @Path("/getAllResource") @Produces(MediaType.APPLICATION_JSON) public String getAllResource() throws JsonProcessingException { List<PersonEntity> list = new ArrayList<PersonEntity>(); for (PersonEntity entity : map.values()) { list.add(entity); } ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(list); } @GET @Path("/getResourceById/{id}") @Produces(MediaType.APPLICATION_JSON) public String getResource(@PathParam("id") String id) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(map.get(id)); } @POST @Path("/addResource/{person}") @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Produces(MediaType.APPLICATION_JSON) public String addResource(String person) throws IOException { ObjectMapper mapper = new ObjectMapper(); PersonEntity entity = mapper.readValue(person, PersonEntity.class); map.put(entity.getId(), entity); return mapper.writeValueAsString(entity); } @GET @Path("/getRandomResource") @Produces(MediaType.APPLICATION_JSON) public String getRandomResource() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); PersonEntity entity = new PersonEntity("NO1", "Joker", "http:///"); return mapper.writeValueAsString(entity); } }
複製程式碼

PersonEntity實體類實現。

複製程式碼
package com.restful.entity;

/**
 * Created by XuHui on 2017/8/2.
 */
public class PersonEntity {
    private String id;
    private String name;
    private String addr;

    public PersonEntity() {
    }

    public PersonEntity(String id, String name, String addr) {
        this.id = id;
        this.name = name;
        this.addr = addr;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @Override
    public String toString() {
        return "PersonEntity{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}
複製程式碼

4.web.xml配置。

複製程式碼
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>Jersey RESTful Application</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.restful</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>Jersey RESTful Application</servlet-name>
  <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>
複製程式碼

5.搭建本地tomcat

6.執行結果.http://localhost:8080/jerseyDemo/rest/application.wadl是所有對外介面的呼叫方法。使用postman來看看這個介面是怎麼呼叫的吧。

POST請求

GET請求