本文演示环境为eclipse + Maven插件 + Jersey framework。本文只关注Jersey的使用,所以只使用类中定义的静态数据做演示。请在使用时修改我的代码。如果你的eclipse中没有安装Maven插件,请关注我的博客,我马上就会推出Maven+eclipse的开发教程。
蓝锋博客: http://bluesfeng.iteye.com/
1. 在eclipse中创建Maven项目
2.单击"Next"
3. 选择Maven项目类型为"maven-archetype-webapp"
4. 输入项目相关的Maven设置
5. 分别创建src/main下java文件夹以及src下test文件夹
6. 设置src/main/java和src/test/java为source folder
7. 最终设置结果如下:
8. 修改pom.xml,添加Maven相应依赖库
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.jianxi.tutorials.jerseyws</groupId>
<artifactId>jerseywstest</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>jerseywstest Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.2</version>
</dependency>
</dependencies>
<build>
<finalName>jerseywstest</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<warFile>target/jerseywstest.war</warFile>
</configuration>
</plugin>
</plugins>
</build>
</project>
9. 添加基本POJO类Student:
package net.jianxi.tutorials.jerseyws.metadata;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Student {
private int id;
private String name;
private String dept;
public int getId() {
return id;
}
public Student() {
}
public Student(int id, String name, String dept) {
super();
this.id = id;
this.name = name;
this.dept = dept;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
}
10. 添加一个REST web服务实现类RestWsDemo:
package net.jianxi.tutorials.jerseyws;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.QueryParam;
import javax.ws.rs.core.MediaType;
import net.jianxi.tutorials.jerseyws.metadata.Student;
import org.apache.log4j.Logger;
@Path("/students")
public class RestWsDemo {
private static Logger logger = Logger.getLogger(RestWsDemo.class);
private static int index = 1;
private static Map<Integer,Student> studentList = new HashMap<Integer, Student>();
public RestWsDemo() {
if(studentList.size()==0) {
studentList.put(index, new Student(index++, "Frank", "CS"));
studentList.put(index, new Student(index++, "Jersey", "Math"));
}
}
@GET
@Path("{studentid}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Student getMetadata(@PathParam("studentid") int studentid) {
if(studentList.containsKey(studentid))
return studentList.get(studentid);
else
return new Student(0, "Nil", "Nil");
}
@GET
@Path("list")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<Student> getAllStudents() {
List<Student> students = new ArrayList<Student>();
students.addAll(studentList.values());
return students;
}
@POST
@Path("add")
@Produces("text/plain")
public String addStudent(@FormParam("name") String name,
@FormParam("dept") String dept) {
studentList.put(index, new Student(index++, name, dept));
return String.valueOf(index-1);
}
@DELETE
@Path("delete/{studentid}")
@Produces("text/plain")
public String removeStudent(@PathParam("studentid") int studentid) {
logger.info("Receieving quest for deleting student: " + studentid);
Student removed = studentList.remove(studentid);
if(removed==null) return "failed!";
else return "true";
}
@PUT
@Path("put")
@Produces("text/plain")
public String putStudent(@QueryParam("studentid") int studentid,
@QueryParam("name") String name,
@QueryParam("dept") String dept
) {
logger.info("Receieving quest for putting student: " + studentid);
if(!studentList.containsKey(studentid))
return "failed!";
else
studentList.put(studentid, new Student(studentid, name, dept));
return String.valueOf(studentid);
}
}
11. 修改src/main/webapp/WEB-INF/web.xml文件如下:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>jerseyws</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
<param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>net.jianxi.tutorials.jerseyws</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jerseyws</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
12. 运行Maven package任务,构建war文件,部署war应用到你的Web服务器。
13. 测试
我马上就会推出如何用SoapUI工具测试Jersey Web服务的教程。这里这介绍简单的测试方法。
13.1) 对于GET,可以直接通过浏览器进行测试,在浏览器中直接输入:http://localhost:8080/jerseywstest/rest/students/list, 你应该看到返回的XML数据:
<students>
<student>
<dept>CS</dept>
<id>1</id>
<name>Frank</name>
</student>
<student>
<dept>Math</dept>
<id>2</id>
<name>Jersey</name>
</student>
</students>
输入:
http://localhost:8080/jerseywstest/rest/students/1则会返回一个学生的信息。
13.2) 测试POST方法。
添加一个testpost.htm文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="/jerseywstest/rest/students/add" method="post">
<input type="text" id="name" name="name"/><br/>
<input type="text" id="dept" name="dept"/><br/>
<input type= "submit"/>
</form>
</body>
</html>
提交后你在用list方法就可以看到数据的变化。
13.3) PUT和DELETE方法的测试
添加一个Junit测试类
package net.jianxi.tutorials.jerseyws;
import javax.ws.rs.core.MultivaluedMap;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
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 RestWsDemoTest {
private String url = "http://localhost:8080/jerseywstest/rest/students";
@Test
public void testDelete() {
Client client = Client.create();
WebResource webResource = client.resource(url + "/delete/1");
ClientResponse response = webResource.delete(ClientResponse.class);
System.out.println("Response for delete request: " + response.getStatus());
}
@Test
public void testPut() {
Client client = Client.create();
WebResource webResource = client.resource(url + "/put");
MultivaluedMap queryParams = new MultivaluedMapImpl();
queryParams.add("studentid", "2");
queryParams.add("name", "nametest");
queryParams.add("dept", "depttest");
ClientResponse response = webResource.queryParams(queryParams).put(ClientResponse.class, "foo:test");
System.out.println("Response for put request: " + response.getStatus());
}
}
- 大小: 44.4 KB
- 大小: 47 KB
- 大小: 92.1 KB
- 大小: 61.1 KB
- 大小: 18.1 KB
- 大小: 34.9 KB
- 大小: 16.7 KB
- 大小: 107.5 KB
分享到:
相关推荐
自己找了资料整合了一份 jersey+spring rest webservice web maven服务器架构,希望有需要的人可以下载使用;
使用maven工程管理项目、jersey框架搭建的简易web项目源码,适合初学者入门
Maven实践-使用Maven开发Web应用 Maven实践-使用Maven开发Web应用 Maven实践-使用Maven开发Web应用
maven +Jersey Restful实现源码
该demo是通过Maven原型(jersey-quickstart-grizzly )创建jersey项目的实例。
使用springmvc、hibernate、maven开发的web实例项目。
基于maven创建web项目 基础环境 Myeclipse2013 Tomcat8.0 Jdk1.8 apache-maven-3.3.9 环境配置
idea使用maven创建web项目详细教程
使用Maven开发Java Web应用,用于安装在eclipse的指导。
该项目可以用作创建由Maven构建的Java Web应用程序的模板,该Java Web应用程序通过Spring和Jersey提供REST服务。 该项目还包括为库和服务设置测试的部分。 安装 该项目是使用Maven构建的。 要创建war档案运行: ...
Spring-Framework-5.2.x源码maven版本,剔除了spring-aspects模块,下载后导入idea依赖完以后就可以愉快的调试spring源码了,转换不易谢谢
使用maven创建web项目,独立管理jar包资源,方便简单高效
使用Idea14.1.4和maven创建java web项目
java后台开发例子–使用Maven建立springmvc的web项目,最简单的测试
maven搭建web项目hello world
maven(jersey+redis+mongodb+spring)集成
该demo是创建maven web工程 配置jersey项目的实例 请参考http://blog.csdn.net/zhongyuan_1990/article/details/45644803
ssm+maven整合搭建web开发,外加junit验证ssm框架搭建的完整姓