一、依赖包

  1、目录结构如下:

  aaarticlea/png;base64,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" alt="" />

 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));
} }

利用Jersey构建REST之入门实例的更多相关文章

  1. SoapUI简介和入门实例解析

    SoapUI简介 SoapUI是一个开源测试工具,通过soap/http来检查.调用.实现Web Service的功能/负载/符合性测试.该工具既可作为一个单独的测试软件使用,也可利用插件集成到Ecl ...

  2. 利用node构建本地服务

    利用node构建本地服务 首先安装下node.js,地址为https://nodejs.org/en/,然后安装npm. node.js的中文api地址http://nodeapi.ucdok.com ...

  3. Vue.js2.0从入门到放弃---入门实例

    最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中,在网上也搜了很多教程,按着教程来做,也总会出现这样那样的问题(坑啊,由于网上那些教程都是Vue.js 1.x版本的,现在用 ...

  4. Spring中IoC的入门实例

    Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...

  5. Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】

    http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...

  6. mybatis 详解(二)------入门实例(基于XML)

    通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一 ...

  7. mybatis 详解(三)------入门实例(基于注解)

    1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...

  8. [Gradle] 在 Eclipse 下利用 gradle 构建系统

      转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/ 构建系统时候常常要用到 Ant, Maven 等工具,对于初学者 ...

  9. EF6CodeFirst+MVC5+Autofac泛型注册 入门实例

    贴一个EF6 CodeFirst模式结合MVC5和Autofac(泛型注册)的一个入门实例 网上类似的例子实在太少,最近自己也有用到这一块的知识,总结了一下,不要让后人踩了自己踩过的坑. 1:新建三个 ...

随机推荐

  1. mysql 查看最大连接数 设置最大连接数

    方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改为 max_connections=1000 服务里重起MY ...

  2. Splashscreen

    Splashscreen Enables developers to show/hide the application's splash screen. Methods show hide Perm ...

  3. (转载)CentOS6下 源代码方式安装openERP7.0

    CentOS6下 源代码方式安装openERP7.0 安装背景 :CPU32 bit,CentOS 6.4版本,openERP7.0,linux shell为bash,PostgreSQL9.2 1. ...

  4. UI-程序的运行顺序

    在AppDelegate.m里面的每个方法里都输入(包括main文件里也输入) NSLog(@"%s %d”,__func__,__LINE__); __func__ :代表使用的方法 __ ...

  5. OC-设计模式KVC+KVO定义及使用

    一.KVC Key-Value-Coding 键值编码(KVC:是一种存取值的方式,通过key存value 或者通过key获取value key从哪里来的呢? key 把对象里面的属性名.变量名当作了 ...

  6. WinForm窗体拖动代码

    本文转载自:http://www.cnblogs.com/ap0606122/archive/2012/10/23/2734964.html using System; using System.Co ...

  7. IIS SMTP status codes

    Here are the meaning of SMTP status codes. Status Code Description 211 System status, or system help ...

  8. 【原】sql 将某列拼成一个字符串

    SQL Server中,写存储过程,时常会碰到这样一个需求:从某个表中取某一列,然后需要将这一列数据以某种形式拼成一个字符串,以供后面使用,下面这种方法能够实现此需求. --取说明书模块枚举,结果格式 ...

  9. CF 500D New Year Santa Network tree 期望 好题

    New Year is coming in Tree World! In this world, as the name implies, there are n cities connected b ...

  10. Python 汉字转拼音库 pypinyin

    一.初衷: 一些开源软件的配置文件中识别区分的部分用英文,那么我们在批量生成配置文件的时候,可以从CMDB导入汉字(idc_name), 然后将它转换成拼音,再或者拼接上IP地址,以便更准确的识别.例 ...