【问题标题】:How to activate a HttpServlet class? [duplicate]如何激活 HttpServlet 类? [复制]
【发布时间】:2021-11-13 12:14:06
【问题描述】:

我有一个延伸到HttpServlet 类的课程。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GreetServer extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().print("hello client");
    }

    // Method to handle POST method request.
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doGet(request, response);
    }
}

我的问题是,如何让它工作并处理 POST 和 GET 请求(我应该在我的 public static void main(String[] args) 方法中写什么)? 我正在使用 Heroku 来部署应用程序。 提前致谢。

【问题讨论】:

  • 您需要使用Java web 容器;例如Tomcat 或 SpringBoot 嵌入式容器。这些将提供“激活”您的 servlet 代码的基础设施。

标签: java servlets


【解决方案1】:

Servlet 不能独立存在。您需要一个 web container 来托管您的 Servlet。

“Servlet”中的“-let”表示这是服务器应用程序的一小部分。执行服务器应用程序的大部分工作,例如在 port 上侦听传入连接、对每个传入 request 执行初始分析、分派到特定 Servlet 以及通过网络将 Servlet 的响应发送回通过托管 Servlet 的 Servlet 容器。

换句话说,您的 Servlet 是一个小组件,可插入到运行在 Java implementation 之上的更大的 Servlet 容器服务器基础设施应用程序(从 Pivotal、Amazon、Oracle、BellSoft、Azul Systems 等供应商处获得) 、Red Hat/IBM、Adoptium、Microsoft 等)在主机操作系统(OS)(如 macOS、Linux、BSD、MS Windows 等)之上运行。

Jakarta Servlet
server stack
your Servlet
Servlet container (Tomcat/Jetty etc.)
Java
host operating system
computer hardware

作为初学者,我建议使用Apache TomcatEclipse Jetty 作为您的Servlet 容器。这两款产品都比较小而且简单,只实现了few dozen Jakarta specifications的一小部分。

稍后,如果您的 Web 应用程序使用 Tomcat/Jetty 不支持的 other Jakarta specs,您可以将 Jakarta 实现库添加到 Tomcat/Jetty,或者您可以选择移动到与这些库捆绑在一起的更大服务器.示例包括TomEEPayaraWildFly/JBossOpen Liberty/WebSphere 等。

我还建议您在编程的同时多做一些学习。以Wikipedia page开头。

将 Servlet 部署到 Web 容器的常用方法是将已编译的类打包到 WAR 文件中。然后只需将该文件拖放到特定容器服务器的相应文件夹中即可。

在开发过程中,您的IDE(例如 IntelliJ、NetBeans 或 Eclipse)可能既可以在自身内部运行 Servlet 容器,也可以连接到外部运行的 Servlet 容器。例如,一些 Maven 原型将包含用于在 IDE 中以嵌入式模式运行 Jetty 的操作,以便快速方便地执行开发中的 Servlet。

在您的特定情况下,您说要使用Heroku 进行生产。 Heroku 是一家云服务公司,提供 Servlet 服务器堆栈,您将在其上部署 Servlet、WAR 文件。

在开发 Servlet 时,您可以使用 Tomcat 或 Jetty 等产品运行,稍后您可以部署到 Heroku。 Jakarta Servlet 是一个开放的 specification 的全部意义在于,您编写的任何 Servlet 都应该在符合该规范的任何和所有 Servlet 容器上成功运行。

你问:

我的public static void main(String[] args)方法应该写什么

Servlet 没有 main 方法。

Servlet 容器会自动定位、加载、实例化和初始化您的 servlet。当您的 Web 应用程序的请求到达服务器时,Web 容器会自动调用您的 Servlet 对象上的方法。

【讨论】:

  • 感谢您的回答。我会尝试使用码头
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2016-07-28
相关资源
最近更新 更多