一、依赖包
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));
} }