利用Jersey构建REST之入门实例

一、依赖包

  1、目录结构如下:

  

 2.jery.jar:转json用的工具包,可以随便找一个。      

  3.对了,还需要引入junit.jar

二、服务端代码

package com.haha.manager;

import java.util.concurrent.atomic.AtomicLong;

public class User {
    
    private static AtomicLong seq = new AtomicLong(0);
    
    private Long id;

    private String name;
    
    private String sex;

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
    
    User(){        
    }

    public User(String name, String sex) {
        this.id = seq.incrementAndGet();
        this.name = name;
        this.sex = sex;
    }

    public Long getId() {
        return id;
    }

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

    
    

}

  资源类:

package com.haha.jersey;

import java.util.ArrayList;
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.FormParam;
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.MediaType;

import com.haha.manager.User;
import com.jery.util.JsonMapper;

@Path("user")
public class UserResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("world")
    /**
     * 测试
     * @return
     */
    public String say(){
        return "helloWorld!";
    }
    
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("hook")
    /**
     * 测试
     * @return
     */
    public String hook(){
        return "hook!";
    }
    
    private static Map<Long,User> userMap=new HashMap<Long,User>();    
    
    
    @POST
    @Path("add")
    @Consumes({MediaType.APPLICATION_FORM_URLENCODED,MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
    public String creatUser(@FormParam("name") String name,
            @FormParam("sex") String sex){
        String rs=null;
        try {
            User user=new User(name,sex);
            userMap.put(user.getId(), user);
            rs=JsonMapper.buildNormal().toJson(userMap);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        return rs;
    }
    
    @DELETE
    @Path("{id}")
    public String deleteUser(@PathParam("id")Long id){
        String rs=null;
        try {
            userMap.remove(id);
            rs=JsonMapper.buildNormal().toJson(userMap);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;
    }
    
    @PUT
    @Path("update")
    @Consumes({MediaType.APPLICATION_FORM_URLENCODED,MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
    public String updateUser(@FormParam("id") String id,
            @FormParam("name") String name){
        String rs=null;
        try {            
            User user=userMap.get(Long.valueOf(id));
            user.setName(name);
            userMap.put(Long.valueOf(id), user);
            rs=JsonMapper.buildNormal().toJson(userMap);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;
    }
    
    @GET
    @Path("{id}")
    @Produces({MediaType.APPLICATION_XML,MediaType.TEXT_PLAIN,MediaType.APPLICATION_JSON})
    public String findUserById(@PathParam("id") Long id){
        User user=userMap.get(id);
        String str="";
        try {
            str=JsonMapper.buildNormal().toJson(user);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
    
    @GET
    @Produces({MediaType.APPLICATION_XML,MediaType.TEXT_PLAIN,MediaType.APPLICATION_JSON})
    public String getUsers(){
        List<User> userList=new ArrayList<User>();
        userList.addAll(userMap.values());
        String str="";
        try {
            str=JsonMapper.buildNormal().toJson(userList);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }


}

  配置文件web.xml:

  

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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>haha</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>
  com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.haha.jersey</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>

三、 客户端程序:

package com.haha.client;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;

import org.junit.Test;

import com.jery.util.JsonMapper;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.core.util.MultivaluedMapImpl;

public class UserClient {
    private static String uri="http://127.0.0.1:8080/haha/rest";
    
    @Test
    public void test_hook(){
        WebResource resource=new Client().resource(uri+"/user/hook");
        ClientResponse response=resource.accept(MediaType.APPLICATION_JSON)
                .get(ClientResponse.class);
        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
    }
    @Test
    public void test_hello(){
        WebResource resource=new Client().resource(uri+"/user/world");
        ClientResponse response=resource.accept(MediaType.TEXT_PLAIN)
                .get(ClientResponse.class);
        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
    }
    
    @Test
    public void addUser(){
        try {
            MultivaluedMap form=new MultivaluedMapImpl();
            form.add("name", "花和尚");
            form.add("sex", "male");
            System.out.println("rq:"+JsonMapper.buildNormal().toJson(form));
            WebResource resource=new Client().resource(uri+"/user/add");
            ClientResponse response = resource.type(MediaType.APPLICATION_FORM_URLENCODED).
                    post(ClientResponse.class, form);
            System.out.println("status"+response.getStatus());
            System.out.println("rs:"+response.getEntity(String.class));
        } catch (Exception e) {
            e.printStackTrace();
        }        
    }
    
    @Test
    public void delete(){
        try {
            WebResource resource=new Client().resource(uri).path("user/3");
            ClientResponse response=resource
                    .delete(ClientResponse.class);
            System.out.println(response.getStatus());
            System.out.println("rs:"+response.getEntity(String.class));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    @Test
    public void update(){
        try {            
            MultivaluedMap form=new MultivaluedMapImpl();
            form.add("id","2");
            form.add("name", "戴(●'◡'●)鑫");
            form.add("sex", "male");            
            System.out.println(JsonMapper.buildNormal().toJson(form));
            WebResource resource=new Client().resource(uri+"/user/update");
            ClientResponse response = resource.type(MediaType.APPLICATION_FORM_URLENCODED)
                    .put(ClientResponse.class,form);
            System.out.println(response.getStatus());
            System.out.println("rs:"+response.getEntity(String.class));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    @Test
    public void findUser(){
        WebResource resource=new Client().resource(uri).path("user/2");
        ClientResponse response=resource.accept(MediaType.TEXT_PLAIN)
                .get(ClientResponse.class);
        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
    }
    
    @Test
    public void getUsers(){
        WebResource resource=new Client().resource(uri).path("user");
        ClientResponse response=resource.accept(MediaType.TEXT_PLAIN)
                .get(ClientResponse.class);
        System.out.println(response.getStatus());
        System.out.println(response.getEntity(String.class));
    }

}
原文地址:https://www.cnblogs.com/shoubianxingchen/p/5299202.html