Jsp 如何在启动时自动运行类
我有一个Web应用程序,它依赖于一些初始化,即需要启动一些线程 比如:Jsp 如何在启动时自动运行类,jsp,Jsp,我有一个Web应用程序,它依赖于一些初始化,即需要启动一些线程 比如: public Class Init { private static resource .... static { // my initialization } public static void init(){} } 因此,我将所有初始化内容放入Init类中,并在每个jsp页面中调用.Init方法。。。init方法为空,其目的是启动init类初始化。这就是我认为只启动一次初始化的原
public Class Init {
private static resource ....
static {
// my initialization
}
public static void init(){}
}
因此,我将所有初始化内容放入Init类中,并在每个jsp页面中调用.Init方法。。。init方法为空,其目的是启动init类初始化。这就是我认为只启动一次初始化的原因
但是我仍然需要在任何页面或servlet中手动调用.init方法。。。具有此初始化的调用的第一个页面将执行所需的操作,在这一点之后,每一个其他页面都是安全的,因为资源已经初始化。但这有一个星期的位置,如果我错过了一个页面,一个用户调用该页面
有没有办法指示Tomcat在应用程序启动后自动执行初始化?您可以使用ServletContextListener。让您的Init类实现这个接口。如果愿意,可以将初始化代码从静态块移动到contextInitialized方法
请注意,您需要通过在web.xml中添加以下内容向Tomcat注册侦听器
因为,您现在还可以访问ServletContext调用sce.getServletContext,如果您选择将任何内容注册为上下文属性,并使其可用于应用程序中的任何servlet或JSP。您可以使用ServletContextListener。让您的Init类实现这个接口。如果愿意,可以将初始化代码从静态块移动到contextInitialized方法
请注意,您需要通过在web.xml中添加以下内容向Tomcat注册侦听器
因为,您现在还可以访问ServletContext调用sce.getServletContext,如果您选择将任何内容注册为上下文属性,并使其可用于应用程序中的任何servlet或JSP,则可以使用它
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class Init implements ServletContextListener {
private static resource;
public void contextInitialized(ServletContextEvent sce) {
// your initialization
}
public void contextDestroyed(ServletContextEvent sce) {
// empty
}
}
<listener>
<listener-class>package.path.to.Init</listener-class>
</listener>