您的位置:首页 > 其它

利用Jersey构建REST之入门实例

2016-03-20 18:39 591 查看
一、依赖包

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: