Maven和Jersey Framework开发REST风格Web Service

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="https://i-blog.csdnimg.cn/blog_migrate/69c5a8ac3fa60e0848d784a6dd461da6.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="https://i-blog.csdnimg.cn/blog_migrate/69c5a8ac3fa60e0848d784a6dd461da6.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="https://i-blog.csdnimg.cn/blog_migrate/69c5a8ac3fa60e0848d784a6dd461da6.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="https://i-blog.csdnimg.cn/blog_migrate/69c5a8ac3fa60e0848d784a6dd461da6.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="https://i-blog.csdnimg.cn/blog_migrate/69c5a8ac3fa60e0848d784a6dd461da6.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>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值