原文地址如下:http://blog.csdn.net/rubyway/article/details/8455276
点击打开链接
注解的含义:
@Path:与根路径结合形成子资源的URI
@PathParam:将参数注入参数的路径
@QueryParam:普通参数传递
@FormParam:表明此参数从HTML属性确定的表单输入
@Produces:响应支持MediaType类型,表示服务端返回到客户端的参数类型
@Consumes:响应支持MediaType类型,表示客户端传递到服务端的参数类型
@Context:引入上下文对象
在Web.xml中配置一个Servlet
[html]
view plain
copy
<servlet> <display-name>JAX-RS REST Servlet
</display-name> <servlet-name>JAX-RS REST Servlet
</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages
</param-name> <param-value>com.test.rest
</param-value> </init-param> <load-on-startup>1
</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JAX-RS REST Servlet
</servlet-name> <url-pattern>/services/*
</url-pattern> </servlet-mapping>
访问的资源在这里,这个返回的形式有JOSN、和XML
[java]
view plain
copy
@Path(
"/restresource")
public class TestRestResource {
@GET @Path(
"/getUser")
@Produces(MediaType.APPLICATION_JSON)
public User getUser() { User user =
new User(); user.setUserName(
"popo"); user.setAge(
29);
return user; } }
还需要定义一个User类,必须在类顶一个@XmlRootElement
[java]
view plain
copy
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement public class User
implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private String userName =
"";
private int age =
0;
public String getUserName() {
return userName; }
public void setUserName(String userName) {
this.userName = userName; }
public int getAge() {
return age; }
public void setAge(
int age) {
this.age = age; } } 调用一下试试看
public class Main {
public static final String USER_URL =
"http://localhost:8080/resttest/services/restresource/getUser";
public static void main(String[] args) { Client c = Client.create(); WebResource wr = c.resource(USER_URL); MultivaluedMap<String, String> params =
new MultivaluedMapImpl(); params.add(
"userName",
"popo"); User result = wr.get(User.
class); System.out.println(result); } }
在路径中指定参数的使用:
[java]
view plain
copy
@GET @Path(
"getUser/{id}")
@Produces(MediaType.TEXT_PLAIN)
public String getUserId(
@PathParam(
"id") String id) {
return id; }
调用如下:
[java]
view plain
copy
String result = wr.path(
"001").get(String.
class);
普通参数传递
[java]
view plain
copy
@GET @Path(
"getId")
@Produces(MediaType.TEXT_PLAIN)
public String getId(
@QueryParam(
"id") String id) {
return id; }
调用如下:
[java]
view plain
copy
String result = wr.queryParam(
"id",
"002").get(String.
class);