**
一、原理图
**
这里以一个用户的服务为例,其他客户端只需要访问RESTful提供的服务即可获取数据。
**
二、代码
**
1、Web层代码(controller/action/servlet)
@WebService//写与不写都没关系
@Path("/user")
public class UserServlet{
ObjectMapper mapper = new ObjectMapper();
//获取所有的用户
//List<Student> {"student":[{"username","ykd"},{"username","gyf2"}]}
@GET
@Path("/list")
@Produces(MediaType.APPLICATION_JSON)
public String list()throws Exception{
List<User> list = new ArrayList<User>();
list.add(new User(1,"ykd","123"));
list.add(new User(2,"cdd","123"));
list.add(new User(3,"lkq","123"));
//现在自己转json,不由jax-rs帮我转json
return mapper.writeValueAsString(list);
}
//通过id查询用户
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public String userById(@PathParam("id") int id)throws Exception{
User user = new User(id,"ggg","123");//->service-dao
return mapper.writeValueAsString(user);
}
@POST
@Path("/add/{json}")
//请求参数是json
@Consumes(MediaType.APPLICATION_JSON)
//响应数据是json
@Produces(MediaType.APPLICATION_JSON)
public String add(String json) throws IOException {
System.out.println(json);
//json数据可以转成对象
User user = mapper.readValue(json,User.class);
System.out.println(user);
//调用相关的service
return "success";
}
}
2、Web.xml配置
<servlet>
<servlet-name>jersey-restful</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.gyf.web.servlet</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jersey-restful</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
**
三、测试
**
这里测试我们同样使用IDEA提供的Test RESTful Web Service
**
四、wadl说明书
**