HttpServlet类之间的混淆以及与Jersey一起使用它

我正在构建实现​​RESTful API的servlet。 我理解Jersey是一个解密和使用给定URL的框架。 我如何将它与HttpServlet类结合使用。

我不明白这两者是如何相互配合的。 我想这是一个非常广泛的问题,但我已经做了相当多的阅读,但仍然坚持这个看似微不足道的概念。 我试图使用扩展HttpServlet类的类来部署应用程序并使用Jersey注释。

 @Path("/api") public class API extends HttpServlet{ @GET @Path("/{name}") @Produces("text/hmtl") public String doGetSayHello(@PathParam("name") String name){ return "Hello" + name; } @GET @Path("/articles") @Produces("text/json") public String doGetArticles(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JSONObject obj = new JSONObject(); obj.put("interns", interns); obj.put("company", "Stack Overflow"); return obj.toString(); } 

}

任何帮助或信息材料将不胜感激!

其实你很困惑,因为你不明白jersey是如何运作的。 Jersey框架基本上使用com.sun.jersey.spi.container.servlet.ServletContainer servlet来拦截所有传入的请求。 正如我们在项目web.xml中配置的那样,所有传入的rest请求都应由该servlet处理。 有一个使用jersey servlet配置的init-param来查找REST服务类。 REST服务类不是Servlet,它们不需要像在代码中那样扩展HttpServlet。 这些REST服务类是简单的POJO注释,用于告诉jersey框架不同的属性,如路径,消耗,产生等。当您从服务方法返回时,jersey负责在定义的’PRODUCES’responseType中编组这些对象并编写它在客户端流上。 以下是web.xml中的泽西配置示例

  REST com.sun.jersey.spi.container.servlet.ServletContainer  com.sun.jersey.config.property.packages  com.rest.services;   1   REST /*  

Jersey使用servlet将URL路由到适当的服务。 您的服务本身不需要扩展servlet。

在较高级别,Jersey的ServletContainer类接受请求,然后根据您的Jersey配置,将调用您的Web服务。 您配置Jersey处理的url模式。 查看第5.3节http://www.vogella.com/articles/REST/ 。