利用Jersey构建REST之入门实例
2016-03-20 18:39
591 查看
一、依赖包
1、目录结构如下:
2.jery.jar:转json用的工具包,可以随便找一个。
3.对了,还需要引入junit.jar
二、服务端代码
资源类:
配置文件web.xml:
三、 客户端程序:
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)); } }
相关文章推荐
- PHP中的12个魔术方法
- 读懂《机器学习实战》代码—K-近邻算法改进约会网站配对效果
- QtGui.QComboBox控件常用函数
- Redis 存储字符串和对象
- 【精力管理】第一章 什么是精力及如何管理精力
- linux环境下IDS相机的开发
- android开发--ViewPager的简单应用
- Some essential tips for algorithm design(一些重要的算法设计技术)
- 链表反转 C++
- 读书笔记——《黑客大曝光》(6/8)
- C# 重载运算符
- 第二章读书笔记
- Spring源码之创建AOP代理(补)
- Android之ListView性能优化——使用ConvertView和ViewHolder
- Binary XML file line : Error inflating class <unknown>(记录一个很内伤的错误)
- Binary XML file line : Error inflating class <unknown>(记录一个很内伤的错误)
- Unity3D学习笔记(5)—— 牧师和魔鬼游戏改进
- Android群英传笔记——第四章:ListView使用技巧
- 全面认识Android手机 (MIUI ROM适配之旅第一天——认识Android手机)
- Android群英传笔记——第四章:ListView使用技巧