依赖的Maven Dependency:
<dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet-core</artifactId> <version>${jersey-version}</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>${jersey-version}</version> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxb-api</artifactId> <version>${jaxb-version}</version> <scope>provided</scope> </dependency>
对应的version:
<properties> <jersey-version>2.17</jersey-version> <jaxb-version>2.1</jaxb-version> </properties>
顺便加上tomcat的plugin:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- http port --> <port>8080</port> <!-- application path always starts with / --> <path>/</path> </configuration> </plugin>
web.xml加上Jersey的servlet:(jersey.config.server.provider.packages指定提供restful的类所在的包名列表)
<servlet> <servlet-name>jersey-helloworld-serlvet</servlet-name> <servlet-class> org.glassfish.jersey.servlet.ServletContainer </servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.tch.test</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey-helloworld-serlvet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping>
测试类:
package com.tch.test.restful; import java.util.ArrayList; import java.util.List; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.tch.test.restful.bean.Address; import com.tch.test.restful.bean.Contact; @Path("/contacts") public class ContactsResource { @GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public List<Contact> getContacts() { List<Contact> contacts = new ArrayList<Contact>(); Contact contact = new Contact(); contact.setId("1"); contact.setName("dreamoftch"); Address address = new Address(); address.setHome("Shanghai"); List<Address> addresses = new ArrayList<Address>(); addresses.add(address); contact.setAddresses(addresses); contacts.add(contact); return contacts; } }
用到的Bean:
package com.tch.test.restful.bean; import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Contact { private String id; private String name; private List<Address> addresses; public Contact() {} public Contact(String id, String name, List<Address> addresses) { this.id = id; this.name = name; this.addresses = addresses; } @XmlElement(name="address") public List<Address> getAddresses() { return addresses; } public void setAddresses(List<Address> addresses) { this.addresses = addresses; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.tch.test.restful.bean; public class Address { private String home; public String getHome() { return home; } public void setHome(String home) { this.home = home; } }
代码就这些,然后运行 mvn tomcat7:run启动web项目。
浏览器直接输入地址:http://localhost:8080/rest/contacts测试Get的方法,返回xml格式的结果。
使用curl 命令:curl -H "Accept: application/json" http://localhost:8080/rest/contacts 测试Get的方法,返回json格式的结果。
Finish...