<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>
@XmlRootElement
public class Student {
private int id; private String name; private String dept;
// 構造器、getter/setter 省略
}
@Path("/students")
public class RestWsDemo {
private static Map<Integer,Student> studentList = new HashMap<>();
private static int index = 1;
static {
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) {
return studentList.getOrDefault(studentid, new Student(0, "Nil", "Nil"));
}
@GET @Path("list") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<Student> getAllStudents() {
return new ArrayList<>(studentList.values());
}
@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) {
return studentList.remove(studentid) != null ? "true" : "failed!";
}
@PUT @Path("put") @Produces("text/plain")
public String putStudent(@QueryParam("studentid") int studentid,
@QueryParam("name") String name,
@QueryParam("dept") String dept) {
if (!studentList.containsKey(studentid)) return "failed!";
studentList.put(studentid, new Student(studentid, name, dept));
return String.valueOf(studentid);
}
}
<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>cz.service</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>
啟動 Tomcat,訪問 https://localhost:8081/rest/students/list 返回 XML/JSON 列表。
