【发布时间】:2010-01-07 05:38:02
【问题描述】:
Servlet 也是 java 程序,但 servlet 中没有 main 方法。谁将担任 servet 上的 main 方法。
【问题讨论】:
Servlet 也是 java 程序,但 servlet 中没有 main 方法。谁将担任 servet 上的 main 方法。
【问题讨论】:
Servlet 在容器内运行(例如:tomcat)。这个容器在 jvm 下执行它的工作。 这里容器采用“没有主要方法”。在简单的java程序中主要方法告诉 执行的开始控制流。但是如果是基于 servlet 的 Web 应用程序 jvm,则不需要搜索 main 方法。 Servlet 容器告诉 jvm 关于启动 控制流。
【讨论】:
Servlet 设计为在 servlet 容器(例如 Apache Tomcat)内运行。 servlet 的执行以下列方式发生:servlet 容器调用 servlet 上的 GenericServlet.service() 方法,该方法通常调用适当的 doXxx() 方法,例如。 doGet()、doPost() 等。doXxx() 方法负责解释 HTTP 请求并提供适当的响应。 GenericServlet.service() 大致类似于普通旧 java 类中的 main()。
【讨论】:
web.xml 或@WebServlet 执行HttpServlet servletName = new ServletClass(); 并将其存储在内存中。每当配置的url-pattern 与servlet 匹配时,就会在特定实例上调用service() 方法。
Servlet 部署在 Java 应用服务器(servlet 容器)上。他们有点“被动”。当您编写 servlet 时,只要有请求或需要,容器就会调用您的 servlet 代码。所以你在你的 servlet 中看不到'main'(整个事情不是从 servlet 启动的),它在应用服务器内部(你可以想象应用服务器的启动是从某种 main 开始的)。
【讨论】:
如果您正在 servlet 中寻找一个区域来放置在启动时运行的代码(类似于 main()),请查看实现 ServletContextListener 接口。
它的两个方法在应用程序启动和关闭时调用。
【讨论】:
Java servlet 中没有 main 方法,就像 Swing JButton 上的 ActionListener 有一个 main 方法一样。他们都拥有的是当某个事件发生时您可以挂钩的方法(例如,单击 JButton,或 HttpServlet 上的 HTTP PUT 请求)。在这两种情况下,您都会获得有关触发调用的事件的信息 - JButton 的 ActionEvent 和 servlet 的 ServletRequest。
从事件处理程序的角度考虑 servlet 可能比试图将它们视为一个独立的 Java 应用程序来负责整个控制流更有用。
【讨论】: