我正在构建实现 RESTful API 的 servlet。我知道 Jersey 是一个用于破译和使用给定 URL 的框架。我如何将它与HttpServlet
class.
我不明白两者如何相互合作。我想这是一个非常笼统的问题,但我已经阅读了相当多的内容,但仍然停留在这个看似微不足道的概念上。我尝试使用扩展的类来部署应用程序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框架主要使用com.sun.jersey.spi.container.servlet.ServletContainer
servlet 拦截所有传入请求。当我们在项目 web.xml 中配置时,所有传入的其余请求都应由该 servlet 处理。有一个使用 jersey servlet 配置的 init-param 来查找您的 REST 服务类。 REST 服务类不是 Servlet,它们不需要像您在代码中所做的那样扩展 HttpServlet。这些 REST 服务类是简单的 POJO,经过注释告诉 jersey 框架不同的属性,例如路径、消耗、生产等。当您从服务方法返回时,jersey 负责将这些对象编组到定义的“PRODUCES”responseType 中并写入它在客户端流上。这是 web.xml 中球衣配置的示例
<servlet>
<servlet-name>REST</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.rest.services;
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>REST</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)