原文地址如下:http://blog.csdn.net/rubyway/article/details/8455276
注解的含义:
@Path:与根路径结合形成子资源的URI
@PathParam:将参数注入参数的路径
@QueryParam:普通参数传递
@FormParam:表明此参数从HTML属性确定的表单输入
@Produces:响应支持MediaType类型,表示服务端返回到客户端的参数类型
@Consumes:响应支持MediaType类型,表示客户端传递到服务端的参数类型
@Context:引入上下文对象
在Web.xml中配置一个Servlet
- <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
- @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
- 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";
- /**
- * @param args
- */
- 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);
- }
- }
在路径中指定参数的使用:
- @GET
- @Path("getUser/{id}")
- @Produces(MediaType.TEXT_PLAIN)
- public String getUserId(@PathParam("id") String id)
- {
- return id;
- }
调用如下:
- String result = wr.path("001").get(String.class);
普通参数传递
- @GET
- @Path("getId")
- @Produces(MediaType.TEXT_PLAIN)
- public String getId(@QueryParam("id") String id)
- {
- return id;
- }
调用如下:
- String result = wr.queryParam("id", "002").get(String.class);