zoukankan      html  css  js  c++  java
  • 利用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));
        }
    
    }
  • 相关阅读:
    Chrome开发者工具详解(1)Elements、Console、Sources面板
    在Mac下运行ASP.NET Core应用程序
    网络性能优化实战
    Chrome开发者工具详解(5)Application、Security、Audits面板
    Chrome开发者工具详解(3)Timeline面板
    Chrome开发者工具详解(2)Network面板
    Chrome开发者工具详解(4)Profiles面板
    1.1专题介绍「深入浅出ASP.NET Core系列」
    1.2环境安装「深入浅出ASP.NET Core系列」
    1.3创建项目「深入浅出ASP.NET Core系列」
  • 原文地址:https://www.cnblogs.com/shoubianxingchen/p/5299202.html
Copyright © 2011-2022 走看看