我正在创建一个由Tomcat托管的Vaadin Web应用程序(可部署的war文件)。在部署war文件时、初始化之前或从客户机获得请求之前,是否有方法做一些事情(比如创建一个对象)?是否可以通过覆盖
void init()
方法?我不太清楚。我是新手。
rsl1atfo1#
当服务器启动时,或者更准确地说,当servlet容器启动时,它会部署所有的Web应用程序,加载它们,然后为每个应用程序创建一个应用程序上下文并存储在其内存中。我提到以上内容是为了让您能够更好地理解您问题的解决方案。现在回到你的问题,你能做的就是创建一个类,命名为任意名称,然后实现ServletContextListener接口,它基本上有两个方法,签名如下。
现在,在contextInitialized方法中,您可以做任何您想做的事情,比如创建一个对象或其他东西,因为这是在初始化ServletContext时调用的方法。在web.xml中放置Map,如下所示
<listener> <listener-class> your fully qualified class name that which will implement the ServletContextListener </listener-class> </listener>
我希望它能回答你的问题。很高兴能帮上忙。
k3fezbri2#
您可以通过在web.xml load-on-startup = 1中指定以下内容来添加另一个要自动加载的类:示例:
<web-app> <servlet> <servlet-name>MyLoader</servlet-name> <servlet-class>com.xxx.MyLoader</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MyLoader</servlet-name> <url-pattern>/load</url-pattern> </servlet-mapping> </web-app>
zpqajqem3#
以上两种方法都有效,但是如果您需要其他替代方法,可以覆盖默认Vaadin servlet中的init方法。
init
public class MyServlet extends com.vaadin.server.VaadinServlet { @Override public void init(javax.servlet.ServletConfig servletConfig) throws ServletException { super.init(servletConfig); // do extra work here! } }
请注意,您需要配置您的web.xml或带注解的UI类,以便使用新的servet初始化您的vaadin应用程序,例如,将'web.xml更改为
web.xml
<servlet> <servlet-name>YourAppName</servlet-name> <servlet-class>path.to.MyServlet</servlet-class> </servlet>
3条答案
按热度按时间rsl1atfo1#
当服务器启动时,或者更准确地说,当servlet容器启动时,它会部署所有的Web应用程序,加载它们,然后为每个应用程序创建一个应用程序上下文并存储在其内存中。我提到以上内容是为了让您能够更好地理解您问题的解决方案。
现在回到你的问题,你能做的就是创建一个类,命名为任意名称,然后实现ServletContextListener接口,它基本上有两个方法,签名如下。
现在,在contextInitialized方法中,您可以做任何您想做的事情,比如创建一个对象或其他东西,因为这是在初始化ServletContext时调用的方法。
在web.xml中放置Map,如下所示
我希望它能回答你的问题。很高兴能帮上忙。
k3fezbri2#
您可以通过在web.xml load-on-startup = 1中指定以下内容来添加另一个要自动加载的类:
示例:
zpqajqem3#
以上两种方法都有效,但是如果您需要其他替代方法,可以覆盖默认Vaadin servlet中的
init
方法。请注意,您需要配置您的
web.xml
或带注解的UI类,以便使用新的servet初始化您的vaadin应用程序,例如,将'web.xml更改为