jersey 通过json方式实现增删改查

原创 2016年05月31日 18:10:36

1.  Person类

package com.base.pf.restful.client;

import java.io.Serializable;
import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Person implements Serializable {

	private static final long serialVersionUID = -8039686696076337053L;

	private Long id;

	private String name;

	private Integer age;

	private String description;

	private Date birthday;

	public Person(String name, Integer age, Date birthday, String description) {
		this.name = name;
		this.age = age;
		this.birthday = birthday;
		this.description = description;
	}
	
	public Person(Long id, String name, Integer age, Date birthday,
			String description) {
		this.id = id;
		this.name = name;
		this.age = age;
		this.birthday = birthday;
		this.description = description;
	}
	
	public String toString() {
		return "{id:"+id+",name:"+name+",age:"+age+",birthday:"+birthday+",decription:"+description+"}";
	}

	public Person() {
	}

	public Long getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
}


2. 服务端

package com.base.pf.restful;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

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.MediaType;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.base.pf.restful.client.Person;

/**
 * jersey 实现增删改查
 * 
 * @author ZHEN.L
 * 
 */
@Path("person")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_XML})
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_XML})
public class PersonResource {

	static Map<Long, Person> map = new HashMap<Long, Person>();

	private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
			"yyyy-mm-dd");

	public PersonResource() {
		Person p;
		try {
			p = new Person(10000L, "张三", 18, DATE_FORMAT.parse("1998-12-10"),
					"好学生。");
			map.put(p.getId(), p);
			p = new Person(10001L, "李四", 19, DATE_FORMAT.parse("1997-05-08"),
					"体育优秀。");
			map.put(p.getId(), p);
			p = new Person(10002L, "王五", 20, DATE_FORMAT.parse("1996-10-01"),
					"数学优秀。");
			map.put(p.getId(), p);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 查询列表
	 * 
	 * @return
	 */
	@GET
	@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
	@Consumes({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
	public String getPersons() {
		Collection<Person> persons = (Collection<Person>) map.values();
		List<Person> list = new ArrayList<Person>(persons);
		return JSONArray.fromObject(list).toString();
	}

	/**
	 * 查询单条记录
	 * 
	 * @param id
	 * @return
	 */
	@GET
	@Path("{id}")
	@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
	@Consumes({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
	public String getPerson(@PathParam("id") Long id) {
		return JSONObject.fromObject(map.get(id)).toString();
	}

	/**
	 * 新建
	 * 
	 * @param person
	 * @return
	 */
	@POST
	@Path("savePerson")
	@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
    @Consumes("application/x-www-form-urlencoded")
	public String savePerson(String params) {
		Person person = (Person) JSONObject.toBean(JSONObject.fromObject(params),Person.class);
		Double d = Math.random() * 10000;
		Long id = d.longValue();
		person.setId(id);
		map.put(id, person);
		Set<Long> ids = map.keySet();
		Iterator<Long> its = ids.iterator();
		while(its.hasNext()){
			System.out.println(map.get(its.next()));
		}
		return JSONObject.fromObject(person).toString();
	}

	/**
	 * 修改
	 * 
	 * @param person
	 * @return
	 */
	@PUT
	@Path("update")
	@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
	@Consumes({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
	public String updatePerson(String params) {
		Person person = (Person) JSONObject.toBean(JSONObject.fromObject(params),Person.class);
		map.put(person.getId(), person);
		return JSONObject.fromObject(person).toString();
		
	}

	/**
	 * 删除
	 * 
	 * @param id
	 */
	@DELETE
	@Path("{id}")
	public void deletePerson(@PathParam("id") Long id) {
		map.remove(id);
	}
}


3. 客户端调用

package com.base.pf.restful.client;

import java.util.Date;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

public class JerseyClient {

	/**
	 * 获取单条记录
	 */
	public void findPerson() {
		Client c = Client.create();
		WebResource resource = c
				.resource("http://localhost:8080/security/rest/person/10000");
		String data = resource.get(String.class);
		Person p = (Person) JSONObject.toBean(JSONObject.fromObject(data),
				Person.class);
		// Person p = resource.get(new GenericType<Person>() {
		// });
		System.out.print(p.getId());
		System.out.print(", " + p.getName());
		System.out.print(", " + p.getAge());
		System.out.print(", " + p.getBirthday());
		System.out.print(", " + p.getDescription());
		System.out.println();
	}

	/**
	 * 获取列表
	 */
	@SuppressWarnings("unchecked")
	public void findPersons() {
		Client c = Client.create();
		WebResource resource = c
				.resource("http://localhost:8080/security/rest/person");
		String data = resource.get(String.class);
		List<Person> persons = JSONArray.toList(JSONArray.fromObject(data),
				Person.class);
		// List<Person> list = resource.get(new GenericType<List<Person>>() {
		// });
		for (Person p : persons) {
			System.out.print(p.getId());
			System.out.print(", " + p.getName());
			System.out.print(", " + p.getAge());
			System.out.print(", " + p.getBirthday());
			System.out.print(", " + p.getDescription());
			System.out.println();
		}
		System.out.println();
	}

	/**
	 * 新建人员
	 */
	public void savePerson() {
		Client c = Client.create();
		WebResource webResource = c
				.resource("http://localhost:8080/security/rest/person/savePerson");
		Person p = new Person("老王", 36, new Date(), "隔壁老王。");
		String data = webResource.post(String.class, JSONObject.fromObject(p)
				.toString());
		Person person = (Person) JSONObject.toBean(JSONObject.fromObject(data),
				Person.class);
		System.out.print(person.getId());
		System.out.print(", " + person.getName());
		System.out.print(", " + person.getAge());
		System.out.print(", " + person.getBirthday());
		System.out.print(", " + person.getDescription());
		System.out.println();
	}

	/**
	 * 修改人员
	 */
	public void updatePerson() {
		Client c = Client.create();
		WebResource webResource = c.resource("http://localhost:8080/security/rest/person/update");
		Person p = new Person("老王", 88, new Date(), "隔壁老王up。");
		p.setId(10000L);
		String data = webResource.put(String.class,JSONObject.fromObject(p).toString());
		Person person = (Person) JSONObject.toBean(JSONObject.fromObject(data),
				Person.class);
		System.out.print(person.getId());
		System.out.print(", " + person.getName());
		System.out.print(", " + person.getAge());
		System.out.print(", " + person.getBirthday());
		System.out.print(", " + person.getDescription());
		System.out.println();
	}
	
	/**
	 * 删除人员
	 */
	public void deletePerson(){
		Client c  = Client.create();
		WebResource webResource = c.resource("http://localhost:8080/security/rest/person/10000");
		webResource.delete();
	}

	public static void main(String[] args) {
		JerseyClient c = new JerseyClient();
		// c.findPerson();
		c.findPersons();
		System.out.println(" -----------------------  ");
//		c.updatePerson();
//		c.savePerson();
		c.deletePerson();
		System.out.println(" -----------------------  ");
		 c.findPersons();
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

简单的JSON增删改

var jsonStr1 = '[{"name":"test1","age":"11"},{"name":"test2","age":"22"}]'; var array = JSON.parse(j...
  • woshihw
  • woshihw
  • 2016年02月17日 11:17
  • 676

Jersey框架二:Jersey对JSON的支持

Jersey提供3种基本方式来使用JSON格式: 一,基于POJO 二,基于JAXB 三,基于底层JSONObject/JSONArray...
  • a19881029
  • a19881029
  • 2015年02月26日 11:10
  • 39392

Spring+Jersey+Hibernate+MySQL+HTML实现用户信息增删改查案例(附Jersey单元测试)

Spring与Jersey整合相对比较简单,但是如果与前端进行交互,实现前后端传值,那就会遇到各种问题。本文的目的,就是详细介绍Spring与Jersey整合如何与前端数据交互。 一、Jersey简...
  • NIITYZU
  • NIITYZU
  • 2016年03月29日 16:22
  • 2660

Jersey框架二:Jersey对JSON的支持

Jersey提供3种基本方式来使用JSON格式: 一,基于POJO 二,基于JAXB 三,基于底层JSONObject/JSONArray...
  • a19881029
  • a19881029
  • 2015年02月26日 11:10
  • 39392

用Jersey构建RESTful服务3--JAVA对象转成JSON输出

一、 总体说明 XML和JSON 是最为常用的数据交换格式。本例子演示如何将java对象,转成JSON输出。 二、流程 1.在上文项目中, 在“com.waylau.rest.resour...
  • kkkloveyou
  • kkkloveyou
  • 2014年03月18日 23:27
  • 19864

RESTful最佳实践之基于 jersey 的增删改查

RESTful最佳实践之基于 jersey 的增删改查 jersey-rest-demo 增删改查 项目地址:https://github.com/CoderDream/jersey-rest-d...
  • yuanxiaojun1990
  • yuanxiaojun1990
  • 2016年01月04日 17:45
  • 252

jersey2.x 解析json字符串

jersey2.x对json的支持有3种,MOXy、JSON-P、Jackson。本文采用的是Jackson实现json字符串的解析与返回。 首先,在pom.xml中添加Jackson的依赖: ...
  • u013485584
  • u013485584
  • 2017年07月18日 22:54
  • 522

Jersey注解详解

REST 在 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一。 REST 中最重要的概念是资源(resources),使用...
  • yixian918
  • yixian918
  • 2014年12月03日 18:39
  • 953

用Jersey构建RESTful服务-JAVA对象转成XML/Json输出

1、XML数据类型输出: 一、 总体说明 XML和JSON 是最为常用的数据交换格式。本例子演示如何将java对象,转成XML输出。 二、流程 1.在上文的例子中,创建一个包“...
  • zmx729618
  • zmx729618
  • 2016年05月06日 13:42
  • 2917

一个包含Jersey库的简单Web Service以及一个发送Json数据的Java客户端

一个包含Jersey库的简单Web Service以及一个发送Json数据的Java客户端一个包含Jersey库的简单Web Service以及一个发送Json数据的Java客户端 Preface 环...
  • u012521978
  • u012521978
  • 2015年03月27日 17:53
  • 1351
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jersey 通过json方式实现增删改查
举报原因:
原因补充:

(最多只允许输入30个字)