【问题标题】:What acts in the role of the 'main method' in a servlet?servlet 中“主要方法”的作用是什么?
【发布时间】:2010-01-07 05:38:02
【问题描述】:

Servlet 也是 java 程序,但 servlet 中没有 main 方法。谁将担任 servet 上的 main 方法。

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    Servlet 在容器内运行(例如:tomcat)。这个容器在 jvm 下执行它的工作。 这里容器采用“没有主要方法”。在简单的java程序中主要方法告诉 执行的开始控制流。但是如果是基于 servlet 的 Web 应用程序 jvm,则不需要搜索 main 方法。 Servlet 容器告诉 jvm 关于启动 控制流。

    【讨论】:

    • Servlet 容器根据请求 url 创建特定 servlet 的对象,并通过提供 config/context 对象对其进行初始化,然后执行其服务方法(或 doXXX 取决于调用 HTTP 方法)
    【解决方案2】:

    Servlet 设计为在 servlet 容器(例如 Apache Tomcat)内运行。 servlet 的执行以下列方式发生:servlet 容器调用 servlet 上的 GenericServlet.service() 方法,该方法通常调用适当的 doXxx() 方法,例如。 doGet()doPost() 等。doXxx() 方法负责解释 HTTP 请求并提供适当的响应。 GenericServlet.service() 大致类似于普通旧 java 类中的 main()

    【讨论】:

    • .. 在启动过程中,servlet 容器会根据web.xml@WebServlet 执行HttpServlet servletName = new ServletClass(); 并将其存储在内存中。每当配置的url-pattern 与servlet 匹配时,就会在特定实例上调用service() 方法。
    【解决方案3】:

    Servlet 部署在 Java 应用服务器(servlet 容器)上。他们有点“被动”。当您编写 servlet 时,只要有请求或需要,容器就会调用您的 servlet 代码。所以你在你的 servlet 中看不到'main'(整个事情不是从 servlet 启动的),它在应用服务器内部(你可以想象应用服务器的启动是从某种 main 开始的)。

    【讨论】:

      【解决方案4】:

      如果您正在 servlet 中寻找一个区域来放置在启动时运行的代码(类似于 main()),请查看实现 ServletContextListener 接口。

      它的两个方法在应用程序启动和关闭时调用。

      【讨论】:

      • @jbruce - 这几乎不等同于主要,IMO。
      • @Stephen - 我认为这个问题被问到需要像在 main() 方法中那样进行一些编码(例如初始化、连接等),我意识到我的答案没有没有真正反映这一点,所以我详细说明了。
      【解决方案5】:

      Java servlet 中没有 main 方法,就像 Swing JButton 上的 ActionListener 有一个 main 方法一样。他们都拥有的是当某个事件发生时您可以挂钩的方法(例如,单击 JButton,或 HttpServlet 上的 HTTP PUT 请求)。在这两种情况下,您都会获得有关触发调用的事件的信息 - JButton 的 ActionEvent 和 servlet 的 ServletRequest。

      从事件处理程序的角度考虑 servlet 可能比试图将它们视为一个独立的 Java 应用程序来负责整个控制流更有用。

      【讨论】:

        猜你喜欢
        • 2015-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-06
        • 1970-01-01
        • 2011-07-14
        • 2011-03-17
        相关资源
        最近更新 更多