当前位置: 首页 > 面试题库 >

我想使用一种部署到服务器后仅被调用一次的方法。

丘向荣
2023-03-14
问题内容

我是Servlet的新手。我想使用一种部署到服务器后仅被调用一次的方法。我看着HttpServlet#init()。但是我发现每个请求都会调用它。我误会了吗?有哪些替代品init()


问题答案:

不,在每个请求中都不会调用它。它仅在servlet初始化期间被调用,该初始化通常在webapp的生存期内仅发生一次。另请参阅此答案以获取更多有关如何创建和执行servlet的详细信息。

如果您实际上想进行一些全局/应用程序范围的初始化(因此,它本身并不仅仅与特定的servlet绑定),那么通常可以使用ServletContextListener。您可以在contextInitialized()方法中进行初始化。

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class Config implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        // Do stuff during webapp's startup.
    }
    public void contextDestroyed(ServletContextEvent event) {
        // Do stuff during webapp's shutdown.
    }
}

如果您Servlet 3.0尚未上线且无法升级,因此无法使用@WebListener注释,则需要手动注册,/WEB- INF/web.xml如下所示:

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>


 类似资料:
  • 问题内容: 我有一个函数,每2.5秒调用一次以检查在后台运行的任务。如果响应为错误,则它将axios调用到url,如果响应成功,则停止该函数。 这在Chrome和Mozilla上完美运行,但由于某些原因在IE(版本11)中不起作用。该函数可以无限地调用自身,但是检查日志表明它仅调用axios一次,即使后端任务已经完成,它也将永远循环。 为什么没有在IE上再次调用axios?有什么我想念的吗? 问题

  • 我有两个服务器,我可以从我的服务器的jsp调用另一个服务器的jsp。 就像下面的代码一样。首先是服务器JSP。 当我点击提交时,控件将进入第二个服务器,它将以name作为参数,并将其放入我的第二个服务器的jsp中。 第二服务器JSP. 我想使用Servlet做完全相同的事情。 我试图与Servlet的重定向我的控制将去第二服务器,但因为重定向它不会采取"名称"peramater。 我尝试使用For

  • 本文档用来说明通过预编译好的安装包来安装并运行基于 MySQL/MariaDB 的 Seafile 服务器。(MariaDB 是 MySQL 的分支) 下载 到下载页面下载最新的服务器安装包. 部署和目录设计 假设你公司的名称为 haiwen, 你也已经下载 seafile-server_1.4.0_* 到你的 home 目录下。 我们建议这样的目录结构: mkdir haiwen mv seaf

  • 本文档详细介绍如何使用预编译好的软件包来安装和运行 Seafile 服务器。 下载 到下载页面下载最新的服务器安装包. 部署和目录结构 注意: 如果你把 Seafile 文件放在一个外部存储的目录里(比如NFS,CIFS),你应该使用 MySQL 而不是 SQLite 来作为数据库。请参考下载和安装Seafile服务器(使用MySQL)。 假设你公司的名称为”haiwen”,你也已经下载 seaf

  • 我期待着在tomcat 7前面的apache超文本传输协议服务器,以呈现我的静态内容,以获得更好的性能和可扩展性。 现在使用pom,我能够部署到tomcat完全战争。 但我找不到任何可以启动http服务器并向其部署静态内容的插件。 基本上,我希望过滤静态资源,并将其部署到http服务器,同时以。把war文件发给tomcat。 我寻找类似的东西与嵌入式apache超文本传输协议服务器插件或东西。 动

  • 问题内容: 我有以下结构: 该方法 可以 被许多线程同时调用。该 会 抛出异常(它在后台,可能成为过时的使用一些数据)。 如果引发异常,则执行一些耗时的任务,比如说“更新”所有当前数据,并且我可以调用。 问题: 如何确保只调用 一次 ?如果我在的条目中放置了原子标志,则不能确定何时清除该标志。 我该如何解决?请注意:由于它是一个外部API,因此我无法修改,并且我正在使用装饰器模式来使用它。 问题答