Jersey RESTful开发

**

一、原理图

**
这里以一个用户的服务为例,其他客户端只需要访问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说明书

**
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41984282/article/details/88542302