Java 在收到客户tomcat war的请求之前做一些事情

Java 在收到客户tomcat war的请求之前做一些事情,java,tomcat,vaadin,war,Java,Tomcat,Vaadin,War,我正在创建一个由tomcat托管的Vaadin web应用程序(可部署的war文件) 在部署war文件时,在初始化之前或从客户机获得请求之前,是否有方法执行某些操作(比如创建一个对象) 是否可以通过覆盖 void init() 方法?我不清楚。我是新来的。提前谢谢 通过在web.xml启动时加载=1中指定,可以添加另一个要自动加载的类: 例如: <web-app> <servlet> <servlet-name>MyLoader</s

我正在创建一个由tomcat托管的Vaadin web应用程序(可部署的war文件)

在部署war文件时,在初始化之前或从客户机获得请求之前,是否有方法执行某些操作(比如创建一个对象)

是否可以通过覆盖

void init()

方法?我不清楚。我是新来的。提前谢谢

通过在web.xml启动时加载=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>

装载机
com.xxx.MyLoader
1.
装载机
/装载

通过在web.xml启动时加载=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>

装载机
com.xxx.MyLoader
1.
装载机
/装载

当服务器启动时,或者更准确地说,当servlet容器启动时,它会部署所有web应用程序,加载它们,然后为每个应用程序创建应用程序上下文并存储在内存中。我提到了上述内容,以便您更好地理解问题的解决方案

现在来回答您的问题,您可以创建一个类并将其命名为任何名称,然后实现ServletContextListener接口。它基本上有两个具有以下签名的方法

  • 公共void contextInitialized(ServletContextEvent事件)
  • 公共无效上下文已销毁(ServletContextEvent事件)
现在在contextInitialized方法中,您可以做任何您想做的事情,比如创建一个对象或其他东西,因为这是在初始化ServletContext时调用的方法

在web.xml中,按如下方式放置映射

<listener>
   <listener-class>
       your fully qualified class name that which will implement the ServletContextListener
     </listener-class>   
</listener>

将实现ServletContextListener的完全限定类名

我希望它能回答你的问题。很乐意提供帮助。

当服务器启动时,或者更准确地说,当servlet容器启动时,它会部署所有web应用程序,加载它们,然后为每个应用程序创建应用程序上下文并存储在内存中。我提到了上述内容,以便您更好地理解问题的解决方案

现在来回答您的问题,您可以创建一个类并将其命名为任何名称,然后实现ServletContextListener接口。它基本上有两个具有以下签名的方法

  • 公共void contextInitialized(ServletContextEvent事件)
  • 公共无效上下文已销毁(ServletContextEvent事件)
现在在contextInitialized方法中,您可以做任何您想做的事情,比如创建一个对象或其他东西,因为这是在初始化ServletContext时调用的方法

在web.xml中,按如下方式放置映射

<listener>
   <listener-class>
       your fully qualified class name that which will implement the ServletContextListener
     </listener-class>   
</listener>

将实现ServletContextListener的完全限定类名

我希望它能回答你的问题。很乐意提供帮助。

以上两个答案都有效,但如果您需要其他选择,可以在默认的Vaadin servlet中重写
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更改为

<servlet>
    <servlet-name>YourAppName</servlet-name>
    <servlet-class>path.to.MyServlet</servlet-class>
</servlet>

你的应用程序名
path.to.MyServlet

以上两个答案都有效,但是如果您想要另一个选择,您可以覆盖默认Vaadin servlet中的
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更改为

<servlet>
    <servlet-name>YourAppName</servlet-name>
    <servlet-class>path.to.MyServlet</servlet-class>
</servlet>

你的应用程序名
path.to.MyServlet

Hi,你能在以下地址查看我关于瓦丁的问题吗:。非常感谢…:-)嗨,你能查一下我关于瓦丁的问题吗。非常感谢…:-)