Maven和Jersey Framework开发REST风格Web Service

来源:互联网 发布:javbus最新域名 编辑:程序博客网 时间:2024/05/16 18:49

Maven和Jersey Framework开发REST风格Web Service

本文演示环境为eclipse + Maven插件 + Jersey framework。本文只关注Jersey的使用,所以只使用类中定义的静态数据做演示。请在使用时修改我的代码。如果你的eclipse中没有安装 Maven插件,请关注我的博客,我马上就会推出Maven+eclipse的开发教程。


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:

复制代码
1 package net.jianxi.tutorials.jerseyws.metadata; 2 3  import javax.xml.bind.annotation.XmlRootElement; 4 5 @XmlRootElement 6  public class Student { 7 private int id; 8 private String name; 9 private String dept;10 11 public int getId() {12 return id;13 }14 15 public Student() {16 }17 18 public Student(int id, String name, String dept) {19 super();20 this.id = id;21 this.name = name;22 this.dept = dept;23 }24 public void setId(int id) {25 this.id = id;26 }27 public String getName() {28 return name;29 }30 public void setName(String name) {31 this.name = name;32 }33 public String getDept() {34 return dept;35 }36 public void setDept(String dept) {37 this.dept = dept;38 }39 40 }41  
复制代码
 

10. 添加一个REST web服务实现类RestWsDemo:

<div class="cnblogs_code" style="background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; font-family: 'Courier New' !important; font-size: 12px !important; "><div class="cnblogs_code_toolbar" style="margin-top: 5px; "><span class="cnblogs_code_copy" style="line-height: 1.5 !important; padding-right: 5px; "><a target=_blank href="" title="复制代码" style="color: rgb(0, 153, 51); text-decoration: none; border: none !important; "><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="border: none !important; " /></a></span></div><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New' !important; "><div style="background-color: rgb(245, 245, 245); "><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 1</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">package</span><span style="line-height: 1.5 !important; "> net.jianxi.tutorials.jerseyws;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 2</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 3</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> java.util.ArrayList;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 4</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> java.util.HashMap;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 5</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> java.util.List;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 6</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> java.util.Map;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 7</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 8</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.DELETE;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 9</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.FormParam;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">10</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.GET;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">11</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.POST;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">12</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.PUT;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">13</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.Path;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">14</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.PathParam;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">15</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.Produces;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">16</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.QueryParam;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">17</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.core.MediaType;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">18</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">19</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> net.jianxi.tutorials.jerseyws.metadata.Student;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">20</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">21</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> org.apache.log4j.Logger;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">22</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">23</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">24</span> <span style="line-height: 1.5 !important; ">@Path(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">/students</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">25</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">class</span><span style="line-height: 1.5 !important; "> RestWsDemo {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">26</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">private</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">static</span><span style="line-height: 1.5 !important; "> Logger logger </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> Logger.getLogger(RestWsDemo.</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">class</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">27</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">private</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">static</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">int</span><span style="line-height: 1.5 !important; "> index </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">1</span><span style="line-height: 1.5 !important; ">;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">28</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">private</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">static</span><span style="line-height: 1.5 !important; "> Map</span><span style="line-height: 1.5 !important; "><</span><span style="line-height: 1.5 !important; ">Integer,Student</span><span style="line-height: 1.5 !important; ">></span><span style="line-height: 1.5 !important; "> studentList </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> HashMap</span><span style="line-height: 1.5 !important; "><</span><span style="line-height: 1.5 !important; ">Integer, Student</span><span style="line-height: 1.5 !important; ">></span><span style="line-height: 1.5 !important; ">();</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">29</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">30</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> RestWsDemo() {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">31</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">if</span><span style="line-height: 1.5 !important; ">(studentList.size()</span><span style="line-height: 1.5 !important; ">==</span><span style="line-height: 1.5 !important; ">0</span><span style="line-height: 1.5 !important; ">) {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">32</span> <span style="line-height: 1.5 !important; ">            studentList.put(index, </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> Student(index</span><span style="line-height: 1.5 !important; ">++</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Frank</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">,  </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">CS</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">));</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">33</span> <span style="line-height: 1.5 !important; ">            studentList.put(index, </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> Student(index</span><span style="line-height: 1.5 !important; ">++</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Jersey</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Math</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">));</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">34</span> <span style="line-height: 1.5 !important; ">        }</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">35</span> <span style="line-height: 1.5 !important; ">    }</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">36</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">37</span> <span style="line-height: 1.5 !important; ">    @GET</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">38</span> <span style="line-height: 1.5 !important; ">    @Path(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">{studentid}</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">39</span> <span style="line-height: 1.5 !important; ">    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">40</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> Student getMetadata(@PathParam(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">studentid</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">) </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">int</span><span style="line-height: 1.5 !important; "> studentid) {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">41</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">if</span><span style="line-height: 1.5 !important; ">(studentList.containsKey(studentid))</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">42</span> <span style="line-height: 1.5 !important; ">            </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> studentList.get(studentid);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">43</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">else</span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">44</span> <span style="line-height: 1.5 !important; ">            </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> Student(</span><span style="line-height: 1.5 !important; ">0</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Nil</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Nil</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">45</span> <span style="line-height: 1.5 !important; ">    }</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">46</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">47</span> <span style="line-height: 1.5 !important; ">    @GET</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">48</span> <span style="line-height: 1.5 !important; ">    @Path(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">list</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">49</span> <span style="line-height: 1.5 !important; ">    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">50</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> List</span><span style="line-height: 1.5 !important; "><</span><span style="line-height: 1.5 !important; ">Student</span><span style="line-height: 1.5 !important; ">></span><span style="line-height: 1.5 !important; "> getAllStudents() {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">51</span> <span style="line-height: 1.5 !important; ">        List</span><span style="line-height: 1.5 !important; "><</span><span style="line-height: 1.5 !important; ">Student</span><span style="line-height: 1.5 !important; ">></span><span style="line-height: 1.5 !important; "> students </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> ArrayList</span><span style="line-height: 1.5 !important; "><</span><span style="line-height: 1.5 !important; ">Student</span><span style="line-height: 1.5 !important; ">></span><span style="line-height: 1.5 !important; ">();</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">52</span> <span style="line-height: 1.5 !important; ">        students.addAll(studentList.values());</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">53</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> students;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">54</span> <span style="line-height: 1.5 !important; ">    }</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">55</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">56</span> <span style="line-height: 1.5 !important; ">    @POST</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">57</span> <span style="line-height: 1.5 !important; ">    @Path(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">add</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">58</span> <span style="line-height: 1.5 !important; ">    @Produces(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">text/plain</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">59</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> String addStudent(@FormParam(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">name</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">) String name,</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">60</span> <span style="line-height: 1.5 !important; ">                             @FormParam(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">dept</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">) String dept) {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">61</span> <span style="line-height: 1.5 !important; ">        studentList.put(index, </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> Student(index</span><span style="line-height: 1.5 !important; ">++</span><span style="line-height: 1.5 !important; ">, name, dept));</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">62</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> String.valueOf(index</span><span style="line-height: 1.5 !important; ">-</span><span style="line-height: 1.5 !important; ">1</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">63</span> <span style="line-height: 1.5 !important; ">    }</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">64</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">65</span> <span style="line-height: 1.5 !important; ">    @DELETE</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">66</span> <span style="line-height: 1.5 !important; ">    @Path(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">delete/{studentid}</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">67</span> <span style="line-height: 1.5 !important; ">    @Produces(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">text/plain</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">68</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> String removeStudent(@PathParam(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">studentid</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">) </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">int</span><span style="line-height: 1.5 !important; "> studentid) {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">69</span> <span style="line-height: 1.5 !important; ">        logger.info(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Receieving quest for deleting student: </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">+</span><span style="line-height: 1.5 !important; "> studentid);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">70</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">71</span> <span style="line-height: 1.5 !important; ">        Student removed </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> studentList.remove(studentid);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">72</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">if</span><span style="line-height: 1.5 !important; ">(removed</span><span style="line-height: 1.5 !important; ">==</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">null</span><span style="line-height: 1.5 !important; ">) </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">failed!</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">73</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">else</span><span style="line-height: 1.5 !important; ">   </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">true</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">74</span> <span style="line-height: 1.5 !important; ">    }    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">75</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">76</span> <span style="line-height: 1.5 !important; ">    @PUT</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">77</span> <span style="line-height: 1.5 !important; ">    @Path(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">put</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">78</span> <span style="line-height: 1.5 !important; ">    @Produces(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">text/plain</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">)</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">79</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> String putStudent(@QueryParam(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">studentid</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">) </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">int</span><span style="line-height: 1.5 !important; "> studentid,</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">80</span> <span style="line-height: 1.5 !important; ">                             @QueryParam(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">name</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">) String name,</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">81</span> <span style="line-height: 1.5 !important; ">                             @QueryParam(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">dept</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">) String dept</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">82</span> <span style="line-height: 1.5 !important; ">                             ) {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">83</span> <span style="line-height: 1.5 !important; ">        logger.info(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Receieving quest for putting student: </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">+</span><span style="line-height: 1.5 !important; "> studentid);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">84</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">if</span><span style="line-height: 1.5 !important; ">(</span><span style="line-height: 1.5 !important; ">!</span><span style="line-height: 1.5 !important; ">studentList.containsKey(studentid))</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">85</span> <span style="line-height: 1.5 !important; ">            </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">failed!</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">86</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">else</span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">87</span> <span style="line-height: 1.5 !important; ">            studentList.put(studentid, </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> Student(studentid, name, dept));</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">88</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">89</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">return</span><span style="line-height: 1.5 !important; "> String.valueOf(studentid);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">90</span> <span style="line-height: 1.5 !important; ">    }    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">91</span> <span style="line-height: 1.5 !important; ">}</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">92</span> </div>
复制代码


11. 修改src/main/webapp/WEB-INF/web.xml文件如下:

<div class="cnblogs_code" style="background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; font-family: 'Courier New' !important; font-size: 12px !important; "><div class="cnblogs_code_toolbar" style="margin-top: 5px; "><span class="cnblogs_code_copy" style="line-height: 1.5 !important; padding-right: 5px; "><a target=_blank href="" title="复制代码" style="color: rgb(0, 153, 51); text-decoration: none; border: none !important; "><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="border: none !important; " /></a></span></div><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New' !important; "><div style="background-color: rgb(245, 245, 245); "><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><!</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 255); ">DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">web-app</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">  </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">display-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">Archetype Created Web Application</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">display-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">jerseyws</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-class</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">com.sun.jersey.spi.container.servlet.ServletContainer</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-class</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">               </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">init-param</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">            </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">com.sun.jersey.config.property.resourceConfigClass</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">            </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-value</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">com.sun.jersey.api.core.PackagesResourceConfig</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-value</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">init-param</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">init-param</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">            </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">com.sun.jersey.config.property.packages</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">            </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-value</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">net.jianxi.tutorials.jerseyws</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">param-value</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">init-param</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">load-on-startup</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">1</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">load-on-startup</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-mapping</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">jerseyws</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">url-pattern</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">/rest/*</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">url-pattern</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">servlet-mapping</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">  </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">web-app</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span></div>
复制代码
 

12. 运行Maven package任务,构建war文件,部署war应用到你的Web服务器。


13. 测试

我马上就会推出如何用SoapUI工具测试Jersey Web服务的教程。这里这介绍简单的测试方法。


13.1) 对于GET,可以直接通过浏览器进行测试,在浏览器中直接输入:http://localhost:8080/jerseywstest/rest/students/list, 你应该看到返回的XML数据:

<div class="cnblogs_code" style="background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; font-family: 'Courier New' !important; font-size: 12px !important; "><div class="cnblogs_code_toolbar" style="margin-top: 5px; "><span class="cnblogs_code_copy" style="line-height: 1.5 !important; padding-right: 5px; "><a target=_blank href="" title="复制代码" style="color: rgb(0, 153, 51); text-decoration: none; border: none !important; "><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="border: none !important; " /></a></span></div><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New' !important; "><div style="background-color: rgb(245, 245, 245); "><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">students</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">  </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">student</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">dept</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">CS</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">dept</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">id</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">1</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">id</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">Frank</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">  </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">student</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">  </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">student</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">dept</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">Math</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">dept</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">id</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">2</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">id</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">Jersey</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">  </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">student</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">students</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span></div>
复制代码
输入:http://localhost:8080/jerseywstest/rest/students/1则会返回一个学生的信息。

13.2) 测试POST方法。

添加一个testpost.htm文件

<div class="cnblogs_code" style="background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; font-family: 'Courier New' !important; font-size: 12px !important; "><div class="cnblogs_code_toolbar" style="margin-top: 5px; "><span class="cnblogs_code_copy" style="line-height: 1.5 !important; padding-right: 5px; "><a target=_blank href="" title="复制代码" style="color: rgb(0, 153, 51); text-decoration: none; border: none !important; "><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="border: none !important; " /></a></span></div><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New' !important; "><div style="background-color: rgb(245, 245, 245); "><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><!</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 255); ">DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">html</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">head</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">meta </span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); ">http-equiv</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="Content-Type"</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); "> content</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="text/html; charset=ISO-8859-1"</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">title</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">Insert title here</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">title</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">head</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">body</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">form </span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); ">action</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="/jerseywstest/rest/students/add"</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); "> method</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="post"</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; ">      </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">input </span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); ">type</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="text"</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); "> id</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="name"</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); "> name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="name"</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">/><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">br</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">/></span><span style="line-height: 1.5 !important; ">      </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">input </span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); ">type</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="text"</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); "> id</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="dept"</span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); "> name</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">="dept"</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">/><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">br</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">/></span><span style="line-height: 1.5 !important; ">      </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "><</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">input </span><span style="line-height: 1.5 !important; color: rgb(255, 0, 0); ">type</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">= "submit"</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">/></span><span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">form</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">body</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span><span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); "></</span><span style="line-height: 1.5 !important; color: rgb(128, 0, 0); ">html</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">></span></div>
复制代码



 提交后你在用list方法就可以看到数据的变化。

13.3) PUT和DELETE方法的测试

添加一个Junit测试类

<div class="cnblogs_code" style="background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; font-family: 'Courier New' !important; font-size: 12px !important; "><div class="cnblogs_code_toolbar" style="margin-top: 5px; "><span class="cnblogs_code_copy" style="line-height: 1.5 !important; padding-right: 5px; "><a target=_blank href="" title="复制代码" style="color: rgb(0, 153, 51); text-decoration: none; border: none !important; "><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="border: none !important; " /></a></span></div><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New' !important; "><div style="background-color: rgb(245, 245, 245); "><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 1</span> <span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">package</span><span style="line-height: 1.5 !important; "> net.jianxi.tutorials.jerseyws;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 2</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 3</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 4</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> javax.ws.rs.core.MultivaluedMap;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 5</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 6</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> org.junit.Before;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 7</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> org.junit.BeforeClass;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 8</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> org.junit.Test;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); "> 9</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">10</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> com.sun.jersey.api.client.Client;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">11</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> com.sun.jersey.api.client.ClientResponse;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">12</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> com.sun.jersey.api.client.WebResource;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">13</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">import</span><span style="line-height: 1.5 !important; "> com.sun.jersey.core.util.MultivaluedMapImpl;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">14</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">15</span> <span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">class</span><span style="line-height: 1.5 !important; "> RestWsDemoTest {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">16</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">private</span><span style="line-height: 1.5 !important; "> String url </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">http://localhost:8080/jerseywstest/rest/students</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">;</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">17</span> <span style="line-height: 1.5 !important; "></span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">18</span> <span style="line-height: 1.5 !important; ">    @Test</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">19</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">void</span><span style="line-height: 1.5 !important; "> testDelete() {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">20</span> <span style="line-height: 1.5 !important; ">        Client client </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> Client.create();</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">21</span> <span style="line-height: 1.5 !important; ">        WebResource webResource </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> client.resource(url </span><span style="line-height: 1.5 !important; ">+</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">/delete/1</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">22</span> <span style="line-height: 1.5 !important; ">        ClientResponse response </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> webResource.delete(ClientResponse.</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">class</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">23</span> <span style="line-height: 1.5 !important; ">        </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">24</span> <span style="line-height: 1.5 !important; ">        System.out.println(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Response for delete request: </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">+</span><span style="line-height: 1.5 !important; "> response.getStatus());</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">25</span> <span style="line-height: 1.5 !important; ">    }</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">26</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">27</span> <span style="line-height: 1.5 !important; ">    @Test</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">28</span> <span style="line-height: 1.5 !important; ">    </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">public</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">void</span><span style="line-height: 1.5 !important; "> testPut() {</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">29</span> <span style="line-height: 1.5 !important; ">        Client client </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> Client.create();</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">30</span> <span style="line-height: 1.5 !important; ">        WebResource webResource </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> client.resource(url </span><span style="line-height: 1.5 !important; ">+</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">/put</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">31</span> <span style="line-height: 1.5 !important; ">        MultivaluedMap queryParams </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">new</span><span style="line-height: 1.5 !important; "> MultivaluedMapImpl();</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">32</span> <span style="line-height: 1.5 !important; ">        queryParams.add(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">studentid</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">2</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">33</span> <span style="line-height: 1.5 !important; ">        queryParams.add(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">name</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">nametest</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">34</span> <span style="line-height: 1.5 !important; ">        queryParams.add(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">dept</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">depttest</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">35</span> <span style="line-height: 1.5 !important; ">        ClientResponse response </span><span style="line-height: 1.5 !important; ">=</span><span style="line-height: 1.5 !important; "> webResource.queryParams(queryParams).put(ClientResponse.</span><span style="line-height: 1.5 !important; color: rgb(0, 0, 255); ">class</span><span style="line-height: 1.5 !important; ">, </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">foo:test</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">);</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">36</span> <span style="line-height: 1.5 !important; ">        System.out.println(</span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; ">Response for put request: </span><span style="line-height: 1.5 !important; ">"</span><span style="line-height: 1.5 !important; "> </span><span style="line-height: 1.5 !important; ">+</span><span style="line-height: 1.5 !important; "> response.getStatus());</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">37</span> <span style="line-height: 1.5 !important; ">    }</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">38</span> <span style="line-height: 1.5 !important; ">}</span><span style="line-height: 1.5 !important; color: rgb(0, 128, 128); ">39</span> <span style="line-height: 1.5 !important; "> </span></div>

0 0