加载启动Tomcat

enf*_*fix 16 tomcat web.xml servlets

如何在Tomcat中启动时加载类?我看到load-on-startupweb.xml文件的标签,但是我可以使用它吗?我该怎么写我的课程?

编辑:我如何实现这个类和xml?

<servlet-name>??</servlet-name>
<servlet-class>??</servlet-class>
<load-on-startup>10</load-on-startup>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 31

这些是为servlet指定加载顺序.但是,servlet更倾向于控制,预处理和/或后处理HTTP请求/响应,而您听起来更像是在webapp的启动时寻找钩子.在那种情况下,你宁愿想要一个ServletContextListener.

@WebListener
public class Config implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        // Do your thing during webapp's startup.
    }
    public void contextDestroyed(ServletContextEvent event) {
        // Do your thing during webapp's shutdown.
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你还没有使用Servlet 3.0(因此无法使用@WebListener),那么你需要手动注册它,web.xml如下所示:

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

也可以看看:


Jai*_*tel 5

元素load-on-startup指示此servlet应该在Web应用程序启动时被加载(实例化并调用init())。该元素的元素内容必须是一个整数,指示应加载servlet的顺序。换句话说,容器以递增的整数值加载servlet。先加载0值,然后再加载1、2、3,依此类推。

让我们尝试通过以下示例了解它:

web.xml

<web-app>  
 ....  
  //=====================servlet 1==============
  <servlet>  
   <servlet-name>servlet1</servlet-name>  
   <servlet-class>com.javatpoint.FirstServlet</servlet-class>  
   <load-on-startup>0</load-on-startup>  //value given 0(zero)
  </servlet>  

  //=====================servlet 2==============
  <servlet>  
   <servlet-name>servlet2</servlet-name>  
   <servlet-class>com.javatpoint.SecondServlet</servlet-class>  
   <load-on-startup>1</load-on-startup>   //value given 1(one)  
  </servlet>  

 ...  
</web-app>  
Run Code Online (Sandbox Code Playgroud)

定义了2个servlet,这两个servlet将在项目部署或服务器启动时加载。但是,将首先加载servlet1,然后再加载servlet2。

传递负值: 如果传递负值,则将在请求时在第一次请求时加载servlet。