java - HttpServlet 类与 Jersey 的混淆

标签 java rest servlets 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();

}

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

最佳答案

其实你很困惑,因为你不明白 Jersey 是如何工作的。 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”响应类型中并将其写入在客户端流上。这是 web.xml 中的 Jersey 配置示例

<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>

关于java - HttpServlet 类与 Jersey 的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713752/

相关文章:

linux - 在 linux 服务器上安装 Glassfish 以兼容 JSP 和 Servlet

java - 构建键值存储

java - Jersey ExceptionMapper 中的 toResponse 不会被调用

java - Jax-rs apache-cxf :No resource methods have been found for resource class

ruby-on-rails - Microsoft Translator API 回答 500 内部服务器错误

hibernate - java.lang.ClassNotFoundException : javax. ws.rs.client.RxInvokerProvider

java - 关闭钩子(Hook)可以用于稍长的任务吗

java - 由于单引号转义,Oracle PreparedStatement 抛出 Value Too Large

java - 打印数学随机生成的数字的最大数字

java - Tomcat ServletContext 无法加载类